<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Jerry Ng]]></title><description><![CDATA[A guy that likes working on hard problems. PhD from MIT, specializing in robotics, controls and machine learning. ]]></description><link>https://articles.jerryng.dev</link><image><url>https://substackcdn.com/image/fetch/$s_!LXzR!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35ecfe62-b5df-4cec-ab2c-621146743b81_977x1065.jpeg</url><title>Jerry Ng</title><link>https://articles.jerryng.dev</link></image><generator>Substack</generator><lastBuildDate>Tue, 08 Sep 2026 17:02:10 GMT</lastBuildDate><atom:link href="https://articles.jerryng.dev/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Jerry Ng]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[jerryng123@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[jerryng123@substack.com]]></itunes:email><itunes:name><![CDATA[Jerry Ng]]></itunes:name></itunes:owner><itunes:author><![CDATA[Jerry Ng]]></itunes:author><googleplay:owner><![CDATA[jerryng123@substack.com]]></googleplay:owner><googleplay:email><![CDATA[jerryng123@substack.com]]></googleplay:email><googleplay:author><![CDATA[Jerry Ng]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Taking Responsibility]]></title><description><![CDATA[Or taking ownership, whatever wording you prefer]]></description><link>https://articles.jerryng.dev/p/taking-responsibility</link><guid isPermaLink="false">https://articles.jerryng.dev/p/taking-responsibility</guid><dc:creator><![CDATA[Jerry Ng]]></dc:creator><pubDate>Fri, 14 Aug 2026 15:30:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GkoN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f7297-da7d-40ec-b1a7-31bd63a01e72_825x460.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you look up job postings on LinkedIn, particularly ones that are clearly AI generated descriptions, you&#8217;ll notice a lot of startups talking about how the role is &#8220;looking for someone to <strong>own</strong> ____ end-to-end&#8221; or that the role gives &#8220;full <strong>ownership</strong> of _____ pipeline and design&#8221;. When I first saw these descriptors, I simply just read *responsibility* in place of ownership. There are some subtle differences, sure. </p><p>Personally, I never really saw the difference between the two; responsibility is heavy. Maybe it&#8217;s because I was too big of a fan of Spider man as a kid. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GkoN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f7297-da7d-40ec-b1a7-31bd63a01e72_825x460.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GkoN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f7297-da7d-40ec-b1a7-31bd63a01e72_825x460.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GkoN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f7297-da7d-40ec-b1a7-31bd63a01e72_825x460.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GkoN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f7297-da7d-40ec-b1a7-31bd63a01e72_825x460.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GkoN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f7297-da7d-40ec-b1a7-31bd63a01e72_825x460.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GkoN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f7297-da7d-40ec-b1a7-31bd63a01e72_825x460.jpeg" width="825" height="460" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/290f7297-da7d-40ec-b1a7-31bd63a01e72_825x460.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:460,&quot;width&quot;:825,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Spider-Man Calls Out Fans for Misunderstanding His Most Famous Quote&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Spider-Man Calls Out Fans for Misunderstanding His Most Famous Quote" title="Spider-Man Calls Out Fans for Misunderstanding His Most Famous Quote" srcset="https://substackcdn.com/image/fetch/$s_!GkoN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f7297-da7d-40ec-b1a7-31bd63a01e72_825x460.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GkoN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f7297-da7d-40ec-b1a7-31bd63a01e72_825x460.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GkoN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f7297-da7d-40ec-b1a7-31bd63a01e72_825x460.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GkoN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f7297-da7d-40ec-b1a7-31bd63a01e72_825x460.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The idea of responsibility as an engineer for me began with two stories I was told long before I even began college.</p><h2>Made of Iron</h2><p>There is a ceremony in Canada called the &#8220;Ritual of the Calling of an Engineer&#8221; where graduating engineers are given an iron ring, and their acceptance of the ring is meant to not only create a sense of pride in their craft, but also serve as a reminder of the responsibility towards the people that are effected by what they create. </p><p>The origin of the ring is based on the Quebec Bridge which is known to have collapsed during construction, killing dozens. The story is that iron from the bridge was fashioned into rings and given to the engineers who designed the bridge, to serve as a brutal reminder of what they were responsible for. This same iron was also fashioned into rings for the early versions of this ceremony. To this day, the ceremony is still done and is no longer locked into just being Canadian; if you attend an American university, there are good odds of receiving this kind of iron ring or being eligible to purchase one at graduation, particularly if you major in something like Structural or Civil engineering. </p><p>A quick aside: it is unclear if the material used to create the rings ever actually came from the bridge and the mystery is part of the allure of the story. </p><h2>The O-Ring</h2><p>The story of the Challenger is one of the most well-known engineering disasters in modern history.</p><p>The critical failure were rubber O-rings that were used in the shuttle&#8217;s solid rocket boosters to ensure a proper seal on a specific joint. The night before launch, the O-rings lost the required flexibility due to the cold weather. This loss of flexibility meant the O-ring couldn&#8217;t do its job and wouldn&#8217;t seal the joint properly. There were multiple engineers who recommended delaying the launch that night, but the managers of the project pushed back and ultimately the managers in charge of manufacturing the O-rings themselves reversed the no-go recommendation, approving the launch. </p><p>Seven people died only seventy-three seconds after launch. </p><h2>Engineers and Discipline</h2><p>The standard discussion surrounding these stories is about how important it is to listen to engineers who flag safety concerns and how organizations need to be structured to enable these concerns to block tragedies. In engineering classes, it becomes a discussion on the importance of voicing your opinions and emphasizing the impact that your decisions can have as an engineer. </p><p>I believe neither fully capture the importance of the human element in both stories. In both stories, there are constraints placed on the people involved; there is money to be lost and deadlines to be kept. There is pressure on people&#8217;s jobs and productivity to be achieved. In the case of the O-rings, NASA hadn&#8217;t had a catastrophe of this magnitude <strong>and</strong> the launch schedule for this flight had been delayed multiple times already. More, and more pressure. </p><p>I think it is very easy for me to sit in my chair and say I would have done better. The same can be said modern day versions of such engineering follies. Cambridge Analytica, the crashes of the Boeing 737, Facebook and Myanmar, etc. </p><p>In modern times, the inability to take adequate responsibility and ownership no longer spins tales of organizational complexity. Instead, the discussion revolves around personal greed and self-interest. In a lot of ways, responsibility has evolved. It is no longer an endeavor about doing what is right over what is dangerous. It is now an endeavor of doing what&#8217;s right despite standing to profit tremendously from doing what&#8217;s wrong. </p><p>Needless to say, modern discourse regards LLM models, AI companies, and the process of creating these models. And once more, it is unclear if the responsible shall prevail.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://articles.jerryng.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Why we should forgive]]></title><description><![CDATA[And reaping the benefits of cooperation]]></description><link>https://articles.jerryng.dev/p/why-we-should-forgive</link><guid isPermaLink="false">https://articles.jerryng.dev/p/why-we-should-forgive</guid><dc:creator><![CDATA[Jerry Ng]]></dc:creator><pubDate>Wed, 12 Aug 2026 15:30:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!uyI_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2494ef4d-a36e-4c84-a565-9fcee91339f6_960x500.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>To preface, this won&#8217;t be an article about why everyone deserves forgiveness for anything they&#8217;ve ever done. People draw boundaries for a reason, and purposefully crossing boundaries is not something that passes the sniff test for forgiveness. </p><p>This article is about why it is important to forgive as a general rule, and I do mean that it is important to forgive even without apologies or retributions from a guilty party. I will say before we dive in that I break my own rules all the time, and am welcome to the idea of being called a hypocrite. </p><p>Let&#8217;s begin with game theory.</p><h2>Game Theory Optimal</h2><p>Game theory gets a lot of attention in popular media because of how it plays into poker, behaviors, etc. And it&#8217;s almost always presented as some extremely complicated, mathematical analysis tool that geniuses uses to model human behaviors and get an edge. With a name like game theory, it makes sense. The branding is great, it rolls of the tongue, its even got a hint of mystery. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uyI_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2494ef4d-a36e-4c84-a565-9fcee91339f6_960x500.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uyI_!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2494ef4d-a36e-4c84-a565-9fcee91339f6_960x500.gif 424w, https://substackcdn.com/image/fetch/$s_!uyI_!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2494ef4d-a36e-4c84-a565-9fcee91339f6_960x500.gif 848w, https://substackcdn.com/image/fetch/$s_!uyI_!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2494ef4d-a36e-4c84-a565-9fcee91339f6_960x500.gif 1272w, https://substackcdn.com/image/fetch/$s_!uyI_!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2494ef4d-a36e-4c84-a565-9fcee91339f6_960x500.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uyI_!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2494ef4d-a36e-4c84-a565-9fcee91339f6_960x500.gif" width="960" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2494ef4d-a36e-4c84-a565-9fcee91339f6_960x500.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6196884,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/210360690?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2494ef4d-a36e-4c84-a565-9fcee91339f6_960x500.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uyI_!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2494ef4d-a36e-4c84-a565-9fcee91339f6_960x500.gif 424w, https://substackcdn.com/image/fetch/$s_!uyI_!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2494ef4d-a36e-4c84-a565-9fcee91339f6_960x500.gif 848w, https://substackcdn.com/image/fetch/$s_!uyI_!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2494ef4d-a36e-4c84-a565-9fcee91339f6_960x500.gif 1272w, https://substackcdn.com/image/fetch/$s_!uyI_!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2494ef4d-a36e-4c84-a565-9fcee91339f6_960x500.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><a href="https://jerryng.dev/assets/substacks/forgiveness/g-bc406a/"><sup>Explore interactively &#8594;</sup></a></p><p>The goal of game theory is simply to model behaviors with simple games. The best choices in the game indicate the behaviors that are best for reality. Part of game theory is modeling <em>utility</em> which is a substitute for everything a person could care about from preferences to money, the whole spectrum of reality. Each person is a player, a rational agent, seeking to maximize their utility via some set of actions. Initial forms of game theory were just tables, but this naturally evolved into trees and equations to capture more complex interactions. </p><p>One of the first games, illustrated above, is the prisoner&#8217;s dilemma. The original prisoner&#8217;s dilemma problem is a one turn game where two players either <em>cooperate</em> or <em>defect</em>; <em>cooperate</em> is to not rat out your co-conspirator of a crime, and to <em>defect</em> is to betray your partner in crime and attempt some kind of snitching plea deal. Naturally, if both cooperate, they do better than if they both attempt to betray each other. But there is a snag, if only one person defects, they reap an extreme reward indicative of being able to not go to prison at all while the partner in crime is punished alone. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yySi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48705d0d-f718-4329-b979-9f2893b78292_271x367.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yySi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48705d0d-f718-4329-b979-9f2893b78292_271x367.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yySi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48705d0d-f718-4329-b979-9f2893b78292_271x367.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yySi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48705d0d-f718-4329-b979-9f2893b78292_271x367.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yySi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48705d0d-f718-4329-b979-9f2893b78292_271x367.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yySi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48705d0d-f718-4329-b979-9f2893b78292_271x367.jpeg" width="423" height="572.8450184501845" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48705d0d-f718-4329-b979-9f2893b78292_271x367.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:367,&quot;width&quot;:271,&quot;resizeWidth&quot;:423,&quot;bytes&quot;:30707,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/210360690?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48705d0d-f718-4329-b979-9f2893b78292_271x367.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yySi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48705d0d-f718-4329-b979-9f2893b78292_271x367.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yySi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48705d0d-f718-4329-b979-9f2893b78292_271x367.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yySi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48705d0d-f718-4329-b979-9f2893b78292_271x367.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yySi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48705d0d-f718-4329-b979-9f2893b78292_271x367.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><sup>Image &#169; Showtime. Key art via </sup><a href="https://en.wikipedia.org/wiki/File:Billions-KeyArt.jpg"><sup>Wikipedia</sup></a></p><p>The iconic game we are most interested in is the iterative version of the prisoner&#8217;s dilemma proposed and studied by Robert Axelrod, likely the reason for the name of the main character in Billions. The story of this research was that Robert Axelrod invited a bunch of game theory afficionados to create strategies in the form of computer programs, and had those programs duel against each other in round-robin tournament formats. The core difference between this problem and the original prisoner&#8217;s dilemma, is that the players played more than one turn of the game, so what a player does in one turn can affect future turns. There were a ton of strategies, and those are discussed in depth in <a href="https://en.wikipedia.org/wiki/The_Evolution_of_Cooperation">The Evolution of Cooperation, Axelrod&#8217;s book</a>.</p><p>There was a simple strategy that prevailed in the tournaments against far more complex strategies that were known for exploitation. This strategy is known as &#8220;Tit For Tat&#8221; and was created by Anatol Rapoport. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QZtz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b567c2-c9fc-48e7-a0d0-29fa0a23eca9_960x496.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QZtz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b567c2-c9fc-48e7-a0d0-29fa0a23eca9_960x496.gif 424w, https://substackcdn.com/image/fetch/$s_!QZtz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b567c2-c9fc-48e7-a0d0-29fa0a23eca9_960x496.gif 848w, https://substackcdn.com/image/fetch/$s_!QZtz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b567c2-c9fc-48e7-a0d0-29fa0a23eca9_960x496.gif 1272w, https://substackcdn.com/image/fetch/$s_!QZtz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b567c2-c9fc-48e7-a0d0-29fa0a23eca9_960x496.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QZtz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b567c2-c9fc-48e7-a0d0-29fa0a23eca9_960x496.gif" width="960" height="496" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c3b567c2-c9fc-48e7-a0d0-29fa0a23eca9_960x496.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:496,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4431327,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/210360690?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b567c2-c9fc-48e7-a0d0-29fa0a23eca9_960x496.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QZtz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b567c2-c9fc-48e7-a0d0-29fa0a23eca9_960x496.gif 424w, https://substackcdn.com/image/fetch/$s_!QZtz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b567c2-c9fc-48e7-a0d0-29fa0a23eca9_960x496.gif 848w, https://substackcdn.com/image/fetch/$s_!QZtz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b567c2-c9fc-48e7-a0d0-29fa0a23eca9_960x496.gif 1272w, https://substackcdn.com/image/fetch/$s_!QZtz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b567c2-c9fc-48e7-a0d0-29fa0a23eca9_960x496.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><a href="https://jerryng.dev/assets/substacks/forgiveness/g-d79db1/"><sup>Explore interactively &#8594;</sup></a></p><p>The strategy was made up of two parts. First, cooperate on the first move. Second, do whatever the opponent did last round. When analyzed by Axelrod, he distilled the problem down to four ideas. Tit for tat is nice, retaliatory, clear, and forgiving. </p><p>It is nice in that it doesn&#8217;t start the fight; it starts by being cooperative. It is retaliatory in that if it is wronged, it will punish in response so that it is not exploited for free. It is clear in that sophisticated programs can easily understand the intentions of the algorithm. And, to the point of the article, it is forgiving. Once the opponent cooperates, it will begin cooperating again. </p><p>There are, of course, caveats to the story. Tit for tat was the best performing in <strong>round-robin</strong> meaning that it was best in overall performance, not unbeatable by every specific strategy. There was also follow up research indicating that for more elaborate scenarios there are variations on tit for tat that are better. </p><p>But, the idea is pretty clear. Even without an adult or parent in the room, two rational self-interested agents may become cooperative because it is beneficial for both of them. Chef&#8217;s kiss. Fade to black. </p><p>Just kidding. If that was the only thing I wrote about, then I&#8217;m no better than a Veritasium video from over two years ago. </p><h2>Exploitation and Punishment</h2><h5><em>Forgiveness for a Reason</em></h5><p>One of the parts of tit for tat that is often glossed over in favor of highlighting the forgiving and nice nature of the algorithm is the retaliation part. Forgiveness doesn&#8217;t always come without a cost to the guilty party. The tit for tat algorithm is not preaching a holier-than-thou ideal where you dole out forgiveness for nothing. No, if anything, it is actually brutal in that it&#8217;s an algorithm that punches back just as hard as it is punched. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dBMe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b497b68-3fbd-4146-a987-36b36952d6b6_960x432.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dBMe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b497b68-3fbd-4146-a987-36b36952d6b6_960x432.gif 424w, https://substackcdn.com/image/fetch/$s_!dBMe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b497b68-3fbd-4146-a987-36b36952d6b6_960x432.gif 848w, https://substackcdn.com/image/fetch/$s_!dBMe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b497b68-3fbd-4146-a987-36b36952d6b6_960x432.gif 1272w, https://substackcdn.com/image/fetch/$s_!dBMe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b497b68-3fbd-4146-a987-36b36952d6b6_960x432.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dBMe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b497b68-3fbd-4146-a987-36b36952d6b6_960x432.gif" width="960" height="432" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b497b68-3fbd-4146-a987-36b36952d6b6_960x432.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:432,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4565377,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/210360690?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b497b68-3fbd-4146-a987-36b36952d6b6_960x432.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dBMe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b497b68-3fbd-4146-a987-36b36952d6b6_960x432.gif 424w, https://substackcdn.com/image/fetch/$s_!dBMe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b497b68-3fbd-4146-a987-36b36952d6b6_960x432.gif 848w, https://substackcdn.com/image/fetch/$s_!dBMe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b497b68-3fbd-4146-a987-36b36952d6b6_960x432.gif 1272w, https://substackcdn.com/image/fetch/$s_!dBMe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b497b68-3fbd-4146-a987-36b36952d6b6_960x432.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><a href="https://jerryng.dev/assets/substacks/forgiveness/g-623d1c/"><sup>Explore interactively &#8594;</sup></a></p><p>It also loses to the most egregious algorithm, which is the one that seeks to defect with no remorse, as it loses on turn one and is never able to catch up. </p><p>If anything, this teaches an additional lesson that is a bit less savory; it is simply not an option to forgive those who do not seek to cooperate. Which seems obvious. It probably should be. But in real life, I think this manifests in ways that are a bit more nuanced. Cooperation isn&#8217;t truly a one-dimensional action. It&#8217;s not simply a choice. People&#8217;s actions are based in value systems and with conflicting interests and self imposed constraints. A person may defect and not even realize they are defecting. They are just cooperating with themselves. The analogy really falls apart fast.</p><p>Some people will have lives inextricably linked to your wellbeing with value systems that are not completely orthogonal to your own, but they might as well be. (And that&#8217;s okay!) But if they differ in direction enough, then you may find yourself in this iterative prisoner&#8217;s dilemma with quite an egregious opponent. It may mean that you have to give up on the idea of cooperating with them and seek a different route of behavior. Otherwise, you&#8217;re just in a situation where forgiveness just leads to inadvertent exploitation. And we wouldn&#8217;t want that. </p><p>After all, we have graphs we need to maintain.</p><h2>The Social Network</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!89C8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F188f3bc7-7c2e-472e-851e-e19d391e3962_414x652.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!89C8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F188f3bc7-7c2e-472e-851e-e19d391e3962_414x652.jpeg 424w, https://substackcdn.com/image/fetch/$s_!89C8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F188f3bc7-7c2e-472e-851e-e19d391e3962_414x652.jpeg 848w, https://substackcdn.com/image/fetch/$s_!89C8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F188f3bc7-7c2e-472e-851e-e19d391e3962_414x652.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!89C8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F188f3bc7-7c2e-472e-851e-e19d391e3962_414x652.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!89C8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F188f3bc7-7c2e-472e-851e-e19d391e3962_414x652.jpeg" width="414" height="652" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/188f3bc7-7c2e-472e-851e-e19d391e3962_414x652.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:652,&quot;width&quot;:414,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The Social Network | Rotten Tomatoes&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Social Network | Rotten Tomatoes" title="The Social Network | Rotten Tomatoes" srcset="https://substackcdn.com/image/fetch/$s_!89C8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F188f3bc7-7c2e-472e-851e-e19d391e3962_414x652.jpeg 424w, https://substackcdn.com/image/fetch/$s_!89C8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F188f3bc7-7c2e-472e-851e-e19d391e3962_414x652.jpeg 848w, https://substackcdn.com/image/fetch/$s_!89C8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F188f3bc7-7c2e-472e-851e-e19d391e3962_414x652.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!89C8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F188f3bc7-7c2e-472e-851e-e19d391e3962_414x652.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><sup>Poster &#169; Columbia Pictures. Image via </sup><a href="https://www.rottentomatoes.com/m/the-social-network"><sup>Rotten Tomatoes</sup></a><sup>.</sup></p><p>The idea of a social network loosely began in the 1800s, with the advent of modern sociology. &#201;mile Durkheim and Ferdinand T&#246;nnies created models of how human relationships transformed through the industrial revolution where small, rural villages that were tight knit with shared values, kindship, and organic closeness became industrial cities where social ties were based on self-interest, contracts, and other yucky things. The networking part came around in the 1900s with Georg Simmel, who imagined society not as individuals or fixed groups but as webs of people. The term social network was finally coined in 1954 by an anthropologist by the name of J.A. Barnes when writing about a parish on the Bremnes island, in Norway.  </p><p>There&#8217;s a lot more to the history, but possibly the big landmark work was <em>The Strength of Weak Ties</em> by Granovetter in 1973. Its hugely cited and it&#8217;s quite the paper. The core demonstration of the paper was that even loose acquaintances, were valuable for things like ... finding jobs. (And the LinkedIn connects go wild!)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dyuz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2296373-2610-44c5-a987-1606a09b46bb_960x435.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dyuz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2296373-2610-44c5-a987-1606a09b46bb_960x435.gif 424w, https://substackcdn.com/image/fetch/$s_!dyuz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2296373-2610-44c5-a987-1606a09b46bb_960x435.gif 848w, https://substackcdn.com/image/fetch/$s_!dyuz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2296373-2610-44c5-a987-1606a09b46bb_960x435.gif 1272w, https://substackcdn.com/image/fetch/$s_!dyuz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2296373-2610-44c5-a987-1606a09b46bb_960x435.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dyuz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2296373-2610-44c5-a987-1606a09b46bb_960x435.gif" width="960" height="435" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2296373-2610-44c5-a987-1606a09b46bb_960x435.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:435,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:189719,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/210360690?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2296373-2610-44c5-a987-1606a09b46bb_960x435.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dyuz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2296373-2610-44c5-a987-1606a09b46bb_960x435.gif 424w, https://substackcdn.com/image/fetch/$s_!dyuz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2296373-2610-44c5-a987-1606a09b46bb_960x435.gif 848w, https://substackcdn.com/image/fetch/$s_!dyuz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2296373-2610-44c5-a987-1606a09b46bb_960x435.gif 1272w, https://substackcdn.com/image/fetch/$s_!dyuz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2296373-2610-44c5-a987-1606a09b46bb_960x435.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Jobs, connections, etc. Valuable things can come from loos ties, all the things that people talk about before networking events. </p><p>Something that isn&#8217;t talked about as much on social media or at these networking events, is the breaking of network connections. People lose friends. They lose connections to coworkers. They drift apart. Weak ties are easy to break; they also don&#8217;t naturally persist in a world rife with conflict. </p><p>Yeah, yeah, I&#8217;m being heavy handed. Forgiveness does in fact help with that. </p><h2>Your friends have more friends than you</h2><p>In 1991, a sociologist named Scott L Feld, observed <a href="https://en.wikipedia.org/wiki/Friendship_paradox">the friendship paradox</a>. In summary, your friends are likely to have more friends than you. Its mildly unintuitive, and has a lot to do with how popular people have a lot of connections and those people don&#8217;t have nearly as much popularity.  </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5JSJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b4e6f00-5c7e-44d2-b426-a45978d5fed6_960x494.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5JSJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b4e6f00-5c7e-44d2-b426-a45978d5fed6_960x494.gif 424w, https://substackcdn.com/image/fetch/$s_!5JSJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b4e6f00-5c7e-44d2-b426-a45978d5fed6_960x494.gif 848w, https://substackcdn.com/image/fetch/$s_!5JSJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b4e6f00-5c7e-44d2-b426-a45978d5fed6_960x494.gif 1272w, https://substackcdn.com/image/fetch/$s_!5JSJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b4e6f00-5c7e-44d2-b426-a45978d5fed6_960x494.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5JSJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b4e6f00-5c7e-44d2-b426-a45978d5fed6_960x494.gif" width="960" height="494" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b4e6f00-5c7e-44d2-b426-a45978d5fed6_960x494.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:494,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4379059,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/210360690?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b4e6f00-5c7e-44d2-b426-a45978d5fed6_960x494.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5JSJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b4e6f00-5c7e-44d2-b426-a45978d5fed6_960x494.gif 424w, https://substackcdn.com/image/fetch/$s_!5JSJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b4e6f00-5c7e-44d2-b426-a45978d5fed6_960x494.gif 848w, https://substackcdn.com/image/fetch/$s_!5JSJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b4e6f00-5c7e-44d2-b426-a45978d5fed6_960x494.gif 1272w, https://substackcdn.com/image/fetch/$s_!5JSJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b4e6f00-5c7e-44d2-b426-a45978d5fed6_960x494.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In mechanical engineering, a lot of time is spent discussing leverage in the form of gear ratios and moment arms. In a lot of ways, friends and social ties are an individual&#8217;s intellectual leverage. </p><p>Stemming back to as early as I can remember, every group project I&#8217;ve partaken in is a slightly sadistic, slightly masochistic game. For the group projects where a teacher decided the groups, I can&#8217;t believe you would do that to me. For every group project I had with friends that carried me, I can&#8217;t thank you enough. </p><p>It feels a bit silly to have an entire section of this article being about how important it is to have friends that are invested in your well-being and forgive you for your faults and that you in turn forgive for their faults so that you can all grow together, but it feels necessary as an adult. I have friend groups span continents and that is in fact a flex. I&#8217;m proud of my friends. I often brag about them. Here&#8217;s a famous video of one of them:</p><div id="youtube2-98nNpzE6gIs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;98nNpzE6gIs&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/98nNpzE6gIs?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>I link everyone I know at the first chance I get because it truly is amazing.  </p><p>And the best part is that he forgives me every time. </p><h2>(Do Not) Stick to the Status Quo</h2><div id="youtube2-yE07FbWmew8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;yE07FbWmew8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/yE07FbWmew8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Most of this article has been about the importance of forgiveness and the value that comes from forgiving. At its core, the idea is that cooperating with people that want to cooperate is valuable and forgiveness enables that. </p><p>I do want to add a slight specification. There&#8217;s no need to participate in insanity. Just because you forgive, doesn&#8217;t mean you have to do the same things over and over. The action space you have in life is far larger than <em>cooperate</em> or <em>defect</em> and you should treat it as such. Being forgiving is a quality that enables you to work with a person again, but that doesn&#8217;t mean you have to work in the same way. You&#8217;re allowed to change the dynamic so that you don&#8217;t have to deal with the same issues of defection again. </p><p>And possibly most important to all of this, forgiveness <strong>should</strong> be something that causes a change in your behavior. You <strong>shouldn&#8217;t</strong> treat relations the same way before and after you are wronged. As a principle, its pretty clear and obvious. It would be insane for a person to keep acting business as usual, maintaining the status quo, after being wronged. </p><p>I emphasize this part so much at the end, because this rule is something I have such a difficult time enacting in my own life. Forgiveness with no behavior changes is simply yearning for a time before any wrongdoings and misgivings. I&#8217;ve found myself recently in a situation where I tend to be doling out forgiveness rather than apologies more often than not. Lucky me. And in this circumstance, I find it difficult to not wish for the times before the forgiveness was required and yearning for the relations that did not require me to change and alter my behavior to accommodate for previous misgivings. </p><p>But alas, that&#8217;s life. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://articles.jerryng.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"><sub>gingerly tap that subscribe button </sub></p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Keep your eye on the ball(s)]]></title><description><![CDATA[You should know, I've never played baseball in my life]]></description><link>https://articles.jerryng.dev/p/keep-your-eye-on-the-balls</link><guid isPermaLink="false">https://articles.jerryng.dev/p/keep-your-eye-on-the-balls</guid><dc:creator><![CDATA[Jerry Ng]]></dc:creator><pubDate>Mon, 10 Aug 2026 15:30:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LXzR!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35ecfe62-b5df-4cec-ab2c-621146743b81_977x1065.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I made a Substack post about answering the question of &#8220;should I go to grad school?&#8221; and I got the following question in response:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zecC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46bddbca-fe89-40b5-b674-b4508263bb33_598x176.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zecC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46bddbca-fe89-40b5-b674-b4508263bb33_598x176.png 424w, https://substackcdn.com/image/fetch/$s_!zecC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46bddbca-fe89-40b5-b674-b4508263bb33_598x176.png 848w, https://substackcdn.com/image/fetch/$s_!zecC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46bddbca-fe89-40b5-b674-b4508263bb33_598x176.png 1272w, https://substackcdn.com/image/fetch/$s_!zecC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46bddbca-fe89-40b5-b674-b4508263bb33_598x176.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zecC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46bddbca-fe89-40b5-b674-b4508263bb33_598x176.png" width="598" height="176" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/46bddbca-fe89-40b5-b674-b4508263bb33_598x176.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:176,&quot;width&quot;:598,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38748,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/210302939?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46bddbca-fe89-40b5-b674-b4508263bb33_598x176.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zecC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46bddbca-fe89-40b5-b674-b4508263bb33_598x176.png 424w, https://substackcdn.com/image/fetch/$s_!zecC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46bddbca-fe89-40b5-b674-b4508263bb33_598x176.png 848w, https://substackcdn.com/image/fetch/$s_!zecC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46bddbca-fe89-40b5-b674-b4508263bb33_598x176.png 1272w, https://substackcdn.com/image/fetch/$s_!zecC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46bddbca-fe89-40b5-b674-b4508263bb33_598x176.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>It was in a chain that honestly had another really good question and observation about the article, and I felt like there&#8217;s something to refine from within the question.</p><p>The short answer is: yes, exactly. </p><p>The longer answer begins with: partially. There&#8217;s certainly value in working towards a goal and treating that goal as a guiding light for the actions you take. I very often have told high schoolers I mentor that they need to have some kind of &#8220;ball&#8221; that they&#8217;re keeping their eyes on; something they&#8217;re chasing even if its only passively. The analogy is relatively consistent. If you&#8217;re not looking at the ball, there&#8217;s no way you&#8217;re going to hit the ball. Honestly, you won&#8217;t even know when to swing the bat. You&#8217;re more likely to just get hit by the ball. </p><p></p><p>It feels like almost everyone who&#8217;s ever become notable or successful has had a goal at some point. Sure, sure, they also likely came from good circumstances or had extraordinary luck, which played a major role in their success, but having the goal was required. The goal makes it so a person can take advantage of situations that will advance them in a general direction. </p><p>However, I believe that the issue is that life goals are often moving targets. The most inarguable example of this is the hedonic treadmill. As life get&#8217;s better, you will seek more or be less satisfied with what you have. To not fall into this trap requires conscious thought and effort to declare enough is enough. And I believe that&#8217;s pretty feasible from a monetary perspective, but I don&#8217;t believe it is true from an intellectual or fulfillment perspective. Anything can become boring. The things that interest us when we are young are very rarely the same things that interest us months or years into the future. Passions die out. That has to be accepted. Bands break up, people shift careers. </p><p>When taking that into account, it becomes a more specific wording of the overall question. Rather than decide based on where you want to go in the overall picture <em>right now</em>, you can instead work in a way that allows you-in-the-future to have the options that they would desire when they&#8217;re picking the direction they want to be in the overall picture. For example, maybe you in the future wants to become a doctor just like how you want to right now (assuming you did), then its ideal that you worked towards becoming a doctor as a goal. But maybe there&#8217;s a 5% chance you want to become a lawyer. Probably should make sure that you read a bit more, it&#8217;ll help both directions. Maybe there&#8217;s a 10% chance you want to become an engineer. Okay, let&#8217;s also pay attention in math class. 15% actor. Well drama class is there and  we do have to sign up for an elective anyway. </p><p>None of these fully detract from each other, after all, every career has some core sets of skills. Also, its far more likely you&#8217;re not sure if what you&#8217;ll want to specialize in within a larger school of thought: do you want to be an electrical engineer or a mechanical engineer? Will you want to become an engineering manager or an individual contributor? There&#8217;s no way of knowing a lot of the specifics in the future nor what your predilections will dictate. </p><p>So in some sense, I&#8217;m really saying that there are actually a ton of right options early on when uncertainty is at its highest and the trajectory of a person can diverge from expectations rapidly. But so long as you have a general angle in mind, you&#8217;ll at least be moving forwards and not staying still. If you&#8217;re able to keep moving, you&#8217;ll be able to keep monitoring where you see the balls you&#8217;re tracking are trending towards, what direction your goals are moving in. You&#8217;ll also keep building skills that keep options open that may not even be within your current head space. </p><h2>You will thank you later</h2><p>My life is a bit of an example of this. I didn&#8217;t really know what I wanted to major in college, but I did know I wanted to play a ton more StarCraft 2 and pursue some sort of Esports career with the game. So in high school, knowing that I was likely going to do something STEM related, I chose engineering as my general direction. For each college I applied to, I queued up a random number generator and had a mapping of numbers to engineering majors. For Berkeley, I was MechE. For UCLA, I believe it was bioengineering. For UC Santa Barbara, it was chemical engineering. For CMU, it was computer science. For UCSD, it was mechanical engineering. For UCI, it was electrical engineering. A complete splattering of options. </p><p>I picked UCSD because it had a better StarCraft team than UCLA. I also checked some university ranking that year that had UCSD MechE as better than UCLA. Who knows if that one is remotely accurate, and also who really cares. After all, I was gonna play a ton of StarCraft and be a pro while in school like all the other cool gamer kids at the time. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ST-0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93f0c14b-d21d-4b08-92f3-4b176ebac431_256x363.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ST-0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93f0c14b-d21d-4b08-92f3-4b176ebac431_256x363.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ST-0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93f0c14b-d21d-4b08-92f3-4b176ebac431_256x363.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ST-0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93f0c14b-d21d-4b08-92f3-4b176ebac431_256x363.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ST-0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93f0c14b-d21d-4b08-92f3-4b176ebac431_256x363.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ST-0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93f0c14b-d21d-4b08-92f3-4b176ebac431_256x363.jpeg" width="256" height="363" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93f0c14b-d21d-4b08-92f3-4b176ebac431_256x363.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:363,&quot;width&quot;:256,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89074,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/210302939?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93f0c14b-d21d-4b08-92f3-4b176ebac431_256x363.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ST-0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93f0c14b-d21d-4b08-92f3-4b176ebac431_256x363.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ST-0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93f0c14b-d21d-4b08-92f3-4b176ebac431_256x363.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ST-0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93f0c14b-d21d-4b08-92f3-4b176ebac431_256x363.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ST-0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93f0c14b-d21d-4b08-92f3-4b176ebac431_256x363.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><sup>Cover art &#169; Blizzard Entertainment. Image via </sup><a href="https://en.wikipedia.org/wiki/File:StarCraft_II_-_Box_Art.jpg"><sup>Wikipedia</sup></a></p><p>Suffice to say, my life did not pan out that way. I was not expecting to go into industry and pursue start up world ad infinitum. I was also not expecting to sour on the idea of becoming a professor in the first year of my PhD. But alas, there&#8217;s no way of knowing the future. </p><p>The me-right-now does thank the me-in-the-past for taking the path he did though. There were a lot of things that I became knowledgeable about or skilled in or colored my life in a way that allows me to appreciate life in a very particular way. In spite of all the suffering that happened along the way. There are doors that remain open in a way that I don&#8217;t think would have been possible without this path and it does feel that as my life has progressed, I&#8217;ve only opened doors for myself and find that I haven&#8217;t closed a door of interest just yet. </p><p>To go back to the analogy, aside from the punctured balls of dreams past, all of the balls are still within view and within reach. I think me-in-the-past for giving me-right-now the opportunity to swing.  </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://articles.jerryng.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">ABSOLUTELY DEMOLISH THAT SUBSCRIBE BUTTON</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Security and Replit]]></title><description><![CDATA[More impressive the more you think about it]]></description><link>https://articles.jerryng.dev/p/security-and-replit</link><guid isPermaLink="false">https://articles.jerryng.dev/p/security-and-replit</guid><dc:creator><![CDATA[Jerry Ng]]></dc:creator><pubDate>Fri, 07 Aug 2026 02:00:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zx8b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36487e6d-0cc1-4bc4-a40a-e38b0bdc849c_960x475.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When Replit first came out, I was perplexed. I really just couldn&#8217;t wrap my head around how it worked. Lovable too, but for the rest of the article, I&#8217;ll mainly be talking about Replit. Not the AI part, but the rest of it. The software and the organizational structure both had to be cohesive to create a product of that kind so quickly and so early in this AI phase of technology.</p><p>My first interaction with them was early 2025 and at that point I hadn&#8217;t been using too many AI coding tools aside from VS Code with Github Copilot and some autocomplete. However, I was doing a lot more fullstack work at the time and thought I understood how frontends and backends worked. </p><h2>General Workflow</h2><p>For the uninitiated who haven&#8217;t worked with one of these tools before, its basically just prompting an LLM to spit out a website. The harness at the time was ahead of its time and its still really cool. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zx8b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36487e6d-0cc1-4bc4-a40a-e38b0bdc849c_960x475.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zx8b!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36487e6d-0cc1-4bc4-a40a-e38b0bdc849c_960x475.gif 424w, https://substackcdn.com/image/fetch/$s_!zx8b!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36487e6d-0cc1-4bc4-a40a-e38b0bdc849c_960x475.gif 848w, https://substackcdn.com/image/fetch/$s_!zx8b!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36487e6d-0cc1-4bc4-a40a-e38b0bdc849c_960x475.gif 1272w, https://substackcdn.com/image/fetch/$s_!zx8b!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36487e6d-0cc1-4bc4-a40a-e38b0bdc849c_960x475.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zx8b!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36487e6d-0cc1-4bc4-a40a-e38b0bdc849c_960x475.gif" width="960" height="475" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36487e6d-0cc1-4bc4-a40a-e38b0bdc849c_960x475.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:475,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6753765,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/210024714?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36487e6d-0cc1-4bc4-a40a-e38b0bdc849c_960x475.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zx8b!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36487e6d-0cc1-4bc4-a40a-e38b0bdc849c_960x475.gif 424w, https://substackcdn.com/image/fetch/$s_!zx8b!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36487e6d-0cc1-4bc4-a40a-e38b0bdc849c_960x475.gif 848w, https://substackcdn.com/image/fetch/$s_!zx8b!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36487e6d-0cc1-4bc4-a40a-e38b0bdc849c_960x475.gif 1272w, https://substackcdn.com/image/fetch/$s_!zx8b!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36487e6d-0cc1-4bc4-a40a-e38b0bdc849c_960x475.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><a href="https://jerryng.dev/assets/substacks/replit-lovable/g-ecb08c/"><sup>Explore interactively &#8594;</sup></a></p><p>But the REALLY cool part is that right after you prompt, the application immediately spawns within the same tab in your browser and its effectively the full application. The wildest part is both Replit and Lovable have wrote somewhat extensively about how they built their systems, or at least enough that you can do a bit of educated guessing on how it all works. </p><h2>Isolated Cloud Sandboxes and Floods</h2><p>The first thing in my mind that made the stack interesting and why it was confusing to me is that they really do just ship a containerized environment that&#8217;s completely isolated. 2025-Jerry saw this and was like, no way, that sounds super expensive. The microVM that the container is shipped on is expensive, but more importantly all the time and talent spent on <strong>securing</strong> the containers looked super expensive. </p><p>Even now, several years after they shipped their product, its not quite clear what exactly an LLM can spit out with every prompt and its not quite clear we can build harnesses that handle all LLM silliness; there&#8217;s odds of needing to re-prompt or pass through sub-agents or do an amalgamation of post processing to ensure a reasonable output.</p><p>In some sense, this wasn&#8217;t a new problem Replit faced that other organizations didn&#8217;t. After all, CI/CD platforms and code runner platforms are dealing with nearly equivalent security concerns. Effectively all software platform-as-a-service companies that target anyone remotely technical as a customer, has to deal with these issues as impending threats. But the volume, does really ramp up and that has caused a lot of issues. I love pointing it out, but Github is still not dealing with the AI code commits well. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q7X3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb1504a-d0e2-4670-8037-2cfd54d292c3_907x518.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q7X3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb1504a-d0e2-4670-8037-2cfd54d292c3_907x518.png 424w, https://substackcdn.com/image/fetch/$s_!Q7X3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb1504a-d0e2-4670-8037-2cfd54d292c3_907x518.png 848w, https://substackcdn.com/image/fetch/$s_!Q7X3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb1504a-d0e2-4670-8037-2cfd54d292c3_907x518.png 1272w, https://substackcdn.com/image/fetch/$s_!Q7X3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb1504a-d0e2-4670-8037-2cfd54d292c3_907x518.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q7X3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb1504a-d0e2-4670-8037-2cfd54d292c3_907x518.png" width="907" height="518" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fb1504a-d0e2-4670-8037-2cfd54d292c3_907x518.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:518,&quot;width&quot;:907,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:103144,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/210024714?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb1504a-d0e2-4670-8037-2cfd54d292c3_907x518.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Q7X3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb1504a-d0e2-4670-8037-2cfd54d292c3_907x518.png 424w, https://substackcdn.com/image/fetch/$s_!Q7X3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb1504a-d0e2-4670-8037-2cfd54d292c3_907x518.png 848w, https://substackcdn.com/image/fetch/$s_!Q7X3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb1504a-d0e2-4670-8037-2cfd54d292c3_907x518.png 1272w, https://substackcdn.com/image/fetch/$s_!Q7X3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb1504a-d0e2-4670-8037-2cfd54d292c3_907x518.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><a href="https://mrshu.github.io/github-statuses/">Shout out to this guy</a></p><p>That said, Replit goes a bit in depth on how they do the security for <a href="https://replit.com/blog/defense-in-depth-how-replit-secures-every-layer-of-the-vibe-coding-stack">their sandbox in their blog</a>.</p><p>The key things, that I didn&#8217;t immediately guess, were that they use are Determinate Nix as a package manager, GCP was chosen as infra with Cloud Run as their sand-boxing method, and, perhaps most importantly, EVERY CUSTOMER GETS THEIR OWN GCP PROJECT INCLUDING FREE-TIER USERS. What a wild decision. The decision to do such a thing almost builds in a requirement to use infrastructure as code, and permission management seems like a nightmare to get through. And adding in the idea of autonomous traffic from AI agents, its hard to not see how daunting the system that needs to be created is.</p><h2>Security Arms Race</h2><p>As with most software that is powerful and being given out to anyone, the immediate concern I have is &#8220;how will I stay ahead of it breaking?&#8221; And I don&#8217;t mean breaking in the sense of servers error-ing out or frontends having bugs. I mean, what if a person purposefully uses packages that are known supply-chain attacks? How do you stay up to date every day with every bug, to ensure your vulnerability doesn&#8217;t endanger the rest of your client base? What happens when someone tries to mine Bitcoin on their Cloud Run instance?</p><p>Maybe my concerns are actually just a demonstration that I don&#8217;t fundamentally work with consumer software that would glean the eyes of people trying to break into my stuff; generally people want the things to work, or the data isn&#8217;t life-threateningly important. </p><p>Regardless, I find myself admiring engineers who are willing to make products like this, because every time code is shipped it is done with some amount of bravery and boldness. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://articles.jerryng.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Just get the free one.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[“Should I go to grad school?” and “Am I working enough?”]]></title><description><![CDATA[And other unreasonable questions]]></description><link>https://articles.jerryng.dev/p/should-i-go-to-grad-school-and-am</link><guid isPermaLink="false">https://articles.jerryng.dev/p/should-i-go-to-grad-school-and-am</guid><dc:creator><![CDATA[Jerry Ng]]></dc:creator><pubDate>Wed, 05 Aug 2026 01:36:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!M6in!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae8d999-9b2d-4929-92ed-227d505a8885_2652x1954.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>These questions have been popping up a lot to me lately, primarily because the first batch of high school students I mentored while in grad school have wrapped up with college. I imagine it also has something to do with the number of people being very vocal about dropping out of college and graduate school to create AI startups, and the new Silicon Valley adoption of <a href="https://www.reddit.com/r/cscareerquestions/comments/1odp6zm/how_does_your_life_work_in_a_996_job/">9-9-6</a>. Despite being clearly different questions, there is a similar level of nuance and it can be difficult to answer all the meaningful angles. </p><p>So first, let&#8217;s just talk about why people go to grad school.</p><h2>Barriers and Signals</h2><p>Graduate school for some jobs is required. If you want to become a doctor or a lawyer, you have to go to medical school or law school respectively. In those cases, going to grad school is quite literally breaking down a barrier to entry. Its table stakes. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M6in!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae8d999-9b2d-4929-92ed-227d505a8885_2652x1954.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M6in!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae8d999-9b2d-4929-92ed-227d505a8885_2652x1954.jpeg 424w, https://substackcdn.com/image/fetch/$s_!M6in!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae8d999-9b2d-4929-92ed-227d505a8885_2652x1954.jpeg 848w, https://substackcdn.com/image/fetch/$s_!M6in!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae8d999-9b2d-4929-92ed-227d505a8885_2652x1954.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!M6in!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae8d999-9b2d-4929-92ed-227d505a8885_2652x1954.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M6in!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae8d999-9b2d-4929-92ed-227d505a8885_2652x1954.jpeg" width="1456" height="1073" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ae8d999-9b2d-4929-92ed-227d505a8885_2652x1954.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1073,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1703808,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/209732860?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae8d999-9b2d-4929-92ed-227d505a8885_2652x1954.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!M6in!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae8d999-9b2d-4929-92ed-227d505a8885_2652x1954.jpeg 424w, https://substackcdn.com/image/fetch/$s_!M6in!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae8d999-9b2d-4929-92ed-227d505a8885_2652x1954.jpeg 848w, https://substackcdn.com/image/fetch/$s_!M6in!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae8d999-9b2d-4929-92ed-227d505a8885_2652x1954.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!M6in!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae8d999-9b2d-4929-92ed-227d505a8885_2652x1954.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><sup>Table stakes. Photo via </sup><a href="https://commons.wikimedia.org/wiki/File:Poker_Chips.jpg"><sup>Wikipedia</sup></a></p><p>The same could be said for a career switch. Not long ago, an assortment of people flooded into coding boot camps and masters programs in computer science to initiate a career switch into big tech. Again, its table stakes, but in a very different way. For those people, the barrier wasn&#8217;t fully constructed.</p><p>I think when thinking about how to get a job, its beneficial to think about the other perspective: what a company wants when hiring a new employee. There&#8217;s a sort of mythos that&#8217;s been created around the process of hiring now because of how obfuscated its become with AI automation across the application, the evaluation, and even the interview process especially around big tech and large organizations. However, the objective of hiring can be boiled down to a company needing a person with a skill set that can do a thing for the company. The hiring process is built around fulfilling this objective and de-risking bringing in a person for that role. I write de-risk because every time a person is hired, there is some level of risk for a company. At startups, especially early on, a bad hire can bring down the entire company.</p><p>So for a person who&#8217;s sole goal is to get a job offer, the goal would be to create a clear signal that you both:</p><ol><li><p>Have the matching skill set that the company is looking for, and</p></li><li><p>Are not risky at all if you joined the company. </p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1IRv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc299ef8-55fb-4968-9bf0-ab64e1fe45ad_2160x2953.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1IRv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc299ef8-55fb-4968-9bf0-ab64e1fe45ad_2160x2953.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1IRv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc299ef8-55fb-4968-9bf0-ab64e1fe45ad_2160x2953.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1IRv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc299ef8-55fb-4968-9bf0-ab64e1fe45ad_2160x2953.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1IRv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc299ef8-55fb-4968-9bf0-ab64e1fe45ad_2160x2953.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1IRv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc299ef8-55fb-4968-9bf0-ab64e1fe45ad_2160x2953.jpeg" width="1456" height="1991" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fc299ef8-55fb-4968-9bf0-ab64e1fe45ad_2160x2953.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1991,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1836543,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/209732860?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc299ef8-55fb-4968-9bf0-ab64e1fe45ad_2160x2953.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1IRv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc299ef8-55fb-4968-9bf0-ab64e1fe45ad_2160x2953.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1IRv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc299ef8-55fb-4968-9bf0-ab64e1fe45ad_2160x2953.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1IRv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc299ef8-55fb-4968-9bf0-ab64e1fe45ad_2160x2953.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1IRv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc299ef8-55fb-4968-9bf0-ab64e1fe45ad_2160x2953.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><sup>A game of risk. Photo via </sup><a href="https://commons.wikimedia.org/wiki/File:Partie_de_Risk,_%C3%A9dition_1970.jpg"><sup>Wikipedia</sup></a></p><p>It then becomes very clear how grad school fits in with this mental model. The credential you receive from grad school is your way of creating a signal that you are the right fit. After all, having an education indicates that you have the ability to learn, and throughout your education you probably picked up a skill or two that is in the skill set that the company is hiring for. In that regard, grad school should be a no-brainer. But it isn&#8217;t anymore. </p><h2>Signal to Noise</h2><p>Because we&#8217;re talking about signal, its immediately important to talk about noise. (Or at least maybe I just think its immediately important because of the engineering/controls background.)</p><p>In this case, noise comes from a lot of places. A person&#8217;s personality, the way they speak, how their resume looks, and even the way a person dresses can provide noise to the signal. That is all stuff that a person controls though, for the most part, so its not particularly worth talking about. </p><p>The thing that&#8217;s outside of their control is the perception about their education. </p><p>Something that has been mentioned to me a lot, probably more than I&#8217;d like, is UC San Diego&#8217;s recent issues with <a href="https://www.forbes.com/sites/annaesakismith/2025/12/11/uc-san-diego-finds-one-in-eight-freshmen-lack-high-school-math-skills/">math skills in their freshmen class.</a> Now a lot of that is completely irrelevant to me now, given the graduate degree I have, but there are jokes about how it devalues my degree. That&#8217;s the problematic noise that comes with education. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8mId!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc571543c-c082-4f2e-a9a2-a0e805e4cc32_680x510.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8mId!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc571543c-c082-4f2e-a9a2-a0e805e4cc32_680x510.webp 424w, https://substackcdn.com/image/fetch/$s_!8mId!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc571543c-c082-4f2e-a9a2-a0e805e4cc32_680x510.webp 848w, https://substackcdn.com/image/fetch/$s_!8mId!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc571543c-c082-4f2e-a9a2-a0e805e4cc32_680x510.webp 1272w, https://substackcdn.com/image/fetch/$s_!8mId!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc571543c-c082-4f2e-a9a2-a0e805e4cc32_680x510.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8mId!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc571543c-c082-4f2e-a9a2-a0e805e4cc32_680x510.webp" width="680" height="510" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c571543c-c082-4f2e-a9a2-a0e805e4cc32_680x510.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:510,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Photo&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Photo" title="Photo" srcset="https://substackcdn.com/image/fetch/$s_!8mId!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc571543c-c082-4f2e-a9a2-a0e805e4cc32_680x510.webp 424w, https://substackcdn.com/image/fetch/$s_!8mId!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc571543c-c082-4f2e-a9a2-a0e805e4cc32_680x510.webp 848w, https://substackcdn.com/image/fetch/$s_!8mId!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc571543c-c082-4f2e-a9a2-a0e805e4cc32_680x510.webp 1272w, https://substackcdn.com/image/fetch/$s_!8mId!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc571543c-c082-4f2e-a9a2-a0e805e4cc32_680x510.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><sup>surely this spaceship library will raise their math ability</sup></p><p>Unsurprisingly, this topic has been researched fairly extensively. In fact, it won a Nobel Prize.</p><h2>Rat Race Equilibrium</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WVTC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7a6589-82d9-4c37-9029-81060d28de76_960x457.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WVTC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7a6589-82d9-4c37-9029-81060d28de76_960x457.gif 424w, https://substackcdn.com/image/fetch/$s_!WVTC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7a6589-82d9-4c37-9029-81060d28de76_960x457.gif 848w, https://substackcdn.com/image/fetch/$s_!WVTC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7a6589-82d9-4c37-9029-81060d28de76_960x457.gif 1272w, https://substackcdn.com/image/fetch/$s_!WVTC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7a6589-82d9-4c37-9029-81060d28de76_960x457.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WVTC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7a6589-82d9-4c37-9029-81060d28de76_960x457.gif" width="960" height="457" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed7a6589-82d9-4c37-9029-81060d28de76_960x457.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:457,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:780308,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/209732860?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7a6589-82d9-4c37-9029-81060d28de76_960x457.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WVTC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7a6589-82d9-4c37-9029-81060d28de76_960x457.gif 424w, https://substackcdn.com/image/fetch/$s_!WVTC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7a6589-82d9-4c37-9029-81060d28de76_960x457.gif 848w, https://substackcdn.com/image/fetch/$s_!WVTC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7a6589-82d9-4c37-9029-81060d28de76_960x457.gif 1272w, https://substackcdn.com/image/fetch/$s_!WVTC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7a6589-82d9-4c37-9029-81060d28de76_960x457.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The <a href="https://www.sfu.ca/~allen/Spence.pdf">research paper, titled &#8220;Job Market Signaling&#8221;,  was written in 1973 by Michael Spence</a>. The core idea of the paper is that education doesn&#8217;t always increase the productivity of an individual, but it does act as a market signal for employers that the individual is &#8220;capable&#8221; because only &#8220;capable&#8221; people can get the degree at a reasonable cost. &#8220;Reasonable cost&#8221; does a lot of heavy lifting here. There is of course the monetary cost which is what people naturally think of, and the opportunity cost which is usually the second thing to come to mind as a person chooses to do school instead of just getting a job for experience. But there are other costs to consider, like strain to mental health, physical health, and even health of a person&#8217;s relationships. All of those are wrapped into the idea of cost. </p><p>With that in mind, if a degree is &#8220;cheap enough&#8221; such that non-&#8221;capable&#8221; people are able to obtain the degree in large enough numbers, the degree becomes useless as a signal for capability. However, because of the degree&#8217;s history as being a useful signal, all people are now forced to obtain the degree just to match the credentialing of everyone else. And thus, we enter into a credential rat race. This topic is discussed pretty significantly in <a href="https://en.wikipedia.org/wiki/The_Case_Against_Education">The Case Against Education by Bryan Caplan</a>. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qWKw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26cf0b7-4998-416b-8f2d-b5a502cced00_960x511.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qWKw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26cf0b7-4998-416b-8f2d-b5a502cced00_960x511.gif 424w, https://substackcdn.com/image/fetch/$s_!qWKw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26cf0b7-4998-416b-8f2d-b5a502cced00_960x511.gif 848w, https://substackcdn.com/image/fetch/$s_!qWKw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26cf0b7-4998-416b-8f2d-b5a502cced00_960x511.gif 1272w, https://substackcdn.com/image/fetch/$s_!qWKw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26cf0b7-4998-416b-8f2d-b5a502cced00_960x511.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qWKw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26cf0b7-4998-416b-8f2d-b5a502cced00_960x511.gif" width="960" height="511" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d26cf0b7-4998-416b-8f2d-b5a502cced00_960x511.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:511,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:190849,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/209732860?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26cf0b7-4998-416b-8f2d-b5a502cced00_960x511.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qWKw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26cf0b7-4998-416b-8f2d-b5a502cced00_960x511.gif 424w, https://substackcdn.com/image/fetch/$s_!qWKw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26cf0b7-4998-416b-8f2d-b5a502cced00_960x511.gif 848w, https://substackcdn.com/image/fetch/$s_!qWKw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26cf0b7-4998-416b-8f2d-b5a502cced00_960x511.gif 1272w, https://substackcdn.com/image/fetch/$s_!qWKw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26cf0b7-4998-416b-8f2d-b5a502cced00_960x511.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><a href="https://jerryng.dev/assets/substacks/grad-school-signal/g-787445/"><sup>Explore interactively &#8594;</sup></a></p><h2>Skill Acquisition and Productivity</h2><p>The idea of &#8220;Job Market Signaling&#8221; is one that really hinges on productivity not being increased through education, which I&#8217;m sure resonates with a lot of people, especially those that hated math from a young age. Formal education, in general, is pretty loss-y in terms of skill and knowledge transfer but its not really guaranteed. I can say though that a lot of the work I did in graduate school, both in classrooms and in formal education have served me very well in my career in terms of being able to look at ambiguous problems and understand how to format them in a way that is solvable through the set of skills I&#8217;ve developed. </p><p>However, there are a lot of skills I&#8217;ve developed outside of the workplace and also outside of education. I actually owe a lot of my productivity to the education I provide myself in my own time. That feels very much like the missing piece in the question of &#8220;Should I go to grad school?&#8221; There&#8217;s an unknowable factor for the me when I try to answer the question for anyone other than myself. I don&#8217;t really know your work ethic, your ability to retain knowledge in a formal setting, your ability to transfer skills that maybe nuanced when attempting to transfer them, your motivation to learn material outside of what you directly intend to work on, or, maybe most importantly, the opportunities that may arise for you specifically if you don&#8217;t go to graduate school. Sure, I think there&#8217;s some expected value from a PhD, but the variation in returns is pretty massive. </p><p>Kind of portraying the opportunity cost issue, people have demonstrated that learning on the job can be pretty consistent in providing useful career-oriented skills. In some regards, learning on the job or creating numerous side projects to highlight your skills can be easier to digest and less amorphous for an employer. It also is fairly consistent in the job market to stop caring about a person&#8217;s education after they&#8217;ve worked a few jobs, as the jobs tend to be a better representation of how someone will work at a new company rather than their education. Maybe its obvious to say, but there are surely ways of highlighting yourself and your capabilities without having to dedicate a line of your resume to a degree. There&#8217;s simply cleaner signals that exist. </p><p>None of this is to say I don&#8217;t recommend going to graduate school. Actually, I&#8217;ve recommended it to a handful of students even when they were in high school. There&#8217;s one in particular that comes to mind, as I recommended they should go do a PhD while they were still a senior in high school. But even for those recommendations, I acknowledge that I&#8217;m mostly guessing at whether they will benefit from the situation and gain the ever sought after &#8220;productivity gain.&#8221; After all, the world changes a lot. </p><h2>&#8220;Enough&#8221; is Enough</h2><p>The question &#8220;Am I working enough?&#8221; is very similar to the grad school question. Its about perception: am I exhibiting a signal that says I&#8217;m being a productive worker through the amount of time I spend on work-related activities?</p><p>Also a question, I am completely incapable of answering for people in most situations. It is an interesting question though, because it comes at a time where perception of effort has seemingly become top of mind on social media. It is fairly easy to scroll through LinkedIn and find posts about companies that expect 60 hour work weeks, or founders of companies talking about how they&#8217;ve been so busy &#8220;on the grind&#8221; for an entire weekend. There&#8217;s a glorification of overworking. </p><p>This glorification seems pretty natural. After all, if I purchase some micro-SaaS service, I do feel more at ease knowing that the company&#8217;s social media says they&#8217;re working all weekend because if I experience any downtime, I should be able to expect a quick remedy. So as a customer, I can appreciate the signal. I imagine the same for an investor as well. The only downside there is for potential employees that desire some off-time, but that&#8217;s only if options for that exist. If a credential is easy to get, then everyone has to get a the credential. If every company expects 60 hour work weeks, then everyone has to work 60 hours per week. </p><p>There&#8217;s also the individual incentive that is interesting as well. I imagine I&#8217;m not too different from most people in wanting my peers to perceive that I am hard-working and care about my work. After all, I envision myself as someone that&#8217;s hard-working. If others were to perceive otherwise, I&#8217;m guaranteed some level of cognitive dissonance. </p><p>As an aside, there&#8217;s probably something to be said about not assigning your value of yourself to perception from others. </p><p>Aside from avoiding cognitive dissonance, there&#8217;s an argument to be made that perception of how productive you are and perception of how much effort you exert ties into assessment of your performance. This idea has become so prevalent at companies that some entire countries are known for having <a href="https://en.wikipedia.org/wiki/996_working_hour_system">a culture built around working extra hours.</a></p><p>I will say that these kind of metrics may make sense in certain situations; there are jobs where hours put in linearly correlates with productivity. A taxi driver, for instance, can take more passengers, the more they drive. However, this relationship between productivity and time isn&#8217;t true in most jobs in modern society. The amount of crops yielded by a farmer, doesn&#8217;t increase solely based on hours put in; in fact, it likely requires a threshold number of hours to get some expectation of yield for crops on a given size of land. </p><h2>Metrics for Signals and Wins Above Replacement</h2><p>Not long ago, people tried to measure software engineer productivity based on lines of code committed. The obvious issue is that you can write a lot of garbage code that is completely unmaintainable or broken; the metric can actually negatively correlate with productivity. More recently this has been done with <a href="https://www.reddit.com/r/cscareerquestions/comments/1toq5fk/for_engineers_who_work_at_big_n_companies_can_you/">AI usage</a> in the form of forcing engineers to use AI coding tools. </p><p>The issue with any of these metrics is that what we really want to know is whether an employee is being more or less productive in quantifiable terms relative to the expected value of a person in their role; effectively, we want to quantify something that is impossible to know. </p><p>In baseball, there&#8217;s a statistic that attempts to ascertain something quite similar: Wins Above Replacement (WAR). The statistic is attempting to capture how many more wins a team due to a specific player&#8217;s performance when compared to a possible replacement. Naturally, this kind of calculation requires a lot of assumptions and adjustments because situations are incredibly nuanced. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8uBe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0f02dac-337f-4eb3-8718-1563db4f464f_960x407.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8uBe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0f02dac-337f-4eb3-8718-1563db4f464f_960x407.gif 424w, https://substackcdn.com/image/fetch/$s_!8uBe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0f02dac-337f-4eb3-8718-1563db4f464f_960x407.gif 848w, https://substackcdn.com/image/fetch/$s_!8uBe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0f02dac-337f-4eb3-8718-1563db4f464f_960x407.gif 1272w, https://substackcdn.com/image/fetch/$s_!8uBe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0f02dac-337f-4eb3-8718-1563db4f464f_960x407.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8uBe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0f02dac-337f-4eb3-8718-1563db4f464f_960x407.gif" width="960" height="407" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0f02dac-337f-4eb3-8718-1563db4f464f_960x407.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:407,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:124759,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/209732860?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0f02dac-337f-4eb3-8718-1563db4f464f_960x407.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8uBe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0f02dac-337f-4eb3-8718-1563db4f464f_960x407.gif 424w, https://substackcdn.com/image/fetch/$s_!8uBe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0f02dac-337f-4eb3-8718-1563db4f464f_960x407.gif 848w, https://substackcdn.com/image/fetch/$s_!8uBe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0f02dac-337f-4eb3-8718-1563db4f464f_960x407.gif 1272w, https://substackcdn.com/image/fetch/$s_!8uBe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0f02dac-337f-4eb3-8718-1563db4f464f_960x407.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><a href="https://jerryng.dev/assets/substacks/grad-school-signal/g-8bf899/"><sup>Explore interactively &#8594;</sup></a></p><p>When thinking of WAR and how it would apply in the workplace, it becomes blatantly clear that metrics like lines of code or AI token usage or hours worked is going to lead to inconsistent results. Every person&#8217;s performance hinges on another person and for large projects, it can be nearly impossible to tease out. A &#8220;win&#8221; in the workplace can be as small as being able to hit a deadline on time. But what if the deadline was placed incorrectly? What if the company goes bankrupt regardless of if this deadline is hit?</p><p>Is everyone at a failing company, failing at executing in their role?</p><h2>Wins Above Myself, Win Probability Added, and Internal Signaling</h2><p>I had a pretty toxic mindset early on in high school all the way through early parts of grad school. It was a lot of external comparisons, especially in things that I viewed as competitions, regardless of if they truly were competitions. And to be clear, it was mostly toxic towards myself. A lot of thoughts along the lines of&#8220;why am I not as good as ___?&#8221;</p><p>Over time, I&#8217;ve noticed my mindset has shifted more towards self-oriented questions. Am I better than I was yesterday? Am I doing better than my average from this past year? Was this decision one that I would make next year given the same information? Did I perform worse than my usual?</p><p>Effectively, I stopped trying to think of things in terms of other people&#8217;s expectations. For the most part, it never really made sense to think of things in those terms; it became especially clear of that during graduate school. After all, even if I lack some arbitrary perfect level of self awareness, I&#8217;m surely more aware of a lot of my capabilities than someone who is interacting with me only a few times in a semester. </p><p>Lately, I&#8217;ve just tried to think about whether I&#8217;m adding win probability to the teams I&#8217;m on and whether I&#8217;m adding as much as I can. Direction and magnitude. It feels a lot less murky in terms of driving what I do on a regular basis, but also it feels a bit more clear what I should focus my efforts and thoughts on. It also becomes clear when I really don&#8217;t need to put in more hours. </p><p>Now obviously there&#8217;s a caveat here and a pretty significant one at that. If I&#8217;m not aligned with the team I&#8217;m on in terms of what we need to do to win, or if I end up lacking a lot of self-awareness, then I&#8217;m doomed to have a terrible performance. </p><p>But I think that risk is a bit more acceptable than needing to ask questions about whether my PhD is worth it or if I should give up sleep to try to squeeze a little bit more work out of my exhausted brain. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://articles.jerryng.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">SMASH THAT SUBSCRIBE BUTTON</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[What is a button?]]></title><description><![CDATA[That which we call a user interface by any other styling would press as tactile]]></description><link>https://articles.jerryng.dev/p/what-is-a-button</link><guid isPermaLink="false">https://articles.jerryng.dev/p/what-is-a-button</guid><dc:creator><![CDATA[Jerry Ng]]></dc:creator><pubDate>Fri, 31 Jul 2026 04:23:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!nVb5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ab52c5-3be9-4f89-9460-4a4c44c16e1b_960x611.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;m not ashamed to admit, before this week, I had no idea how a button on a website works.</p><p>I&#8217;ve used buttons for a long time, I&#8217;ve done short presses and long presses. I&#8217;ve made websites with default HTML buttons. Hell, I&#8217;ve even put together custom css for styling a button on a website. But I didn&#8217;t know how a browser takes code and makes a button. I never had a class on it (turns out it isn&#8217;t relevant to a mechanical engineering degree). I also recognize that we are in an age where everyone just talks about vibe coding and I&#8217;ll probably never need to know on a fundamental level how a button works.</p><p>Anyway, here is everything I&#8217;ve learned about buttons this week. </p><h2><br>The First Button</h2><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_Jb-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8c45ab-ea9d-4274-9f1d-613203ab85c2_116x61.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_Jb-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8c45ab-ea9d-4274-9f1d-613203ab85c2_116x61.png 424w, https://substackcdn.com/image/fetch/$s_!_Jb-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8c45ab-ea9d-4274-9f1d-613203ab85c2_116x61.png 848w, https://substackcdn.com/image/fetch/$s_!_Jb-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8c45ab-ea9d-4274-9f1d-613203ab85c2_116x61.png 1272w, https://substackcdn.com/image/fetch/$s_!_Jb-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8c45ab-ea9d-4274-9f1d-613203ab85c2_116x61.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_Jb-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8c45ab-ea9d-4274-9f1d-613203ab85c2_116x61.png" width="116" height="61" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce8c45ab-ea9d-4274-9f1d-613203ab85c2_116x61.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:61,&quot;width&quot;:116,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1112,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/209208587?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8c45ab-ea9d-4274-9f1d-613203ab85c2_116x61.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_Jb-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8c45ab-ea9d-4274-9f1d-613203ab85c2_116x61.png 424w, https://substackcdn.com/image/fetch/$s_!_Jb-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8c45ab-ea9d-4274-9f1d-613203ab85c2_116x61.png 848w, https://substackcdn.com/image/fetch/$s_!_Jb-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8c45ab-ea9d-4274-9f1d-613203ab85c2_116x61.png 1272w, https://substackcdn.com/image/fetch/$s_!_Jb-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8c45ab-ea9d-4274-9f1d-613203ab85c2_116x61.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Just a few years before I was born, <a href="https://en.wikipedia.org/wiki/HTML">the original HTML was created</a> and it actually had no buttons. It only had the <code>&lt;a&gt;</code> tag. The <code>&lt;a&gt;</code> tag is the anchor tag, which works even to this day to embed links. It wasn&#8217;t until around 1992 that HTML+ was created, and along with it, <a href="https://forms.app/en/blog/story-of-the-first-online-forms">interactive objects and inputs.</a> <a href="https://ventureharbour.com/the-evolution-of-web-forms/">Forms</a> became possible as a result. </p><p><em>As an aside</em>, I had no idea that Marc Andreesen, of Andreesen Horowitz fame, was part of the team at University of Illinois that created the graphical browser, NCSA Mosaic, that made these forms possible to render nor was I aware that he co-founded Netscape. It suddenly makes way more sense why he&#8217;s so successful; <strong>he&#8217;s the reason we saw the first set of buttons</strong>. </p><p></p><h2>Rendering a Button</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nVb5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ab52c5-3be9-4f89-9460-4a4c44c16e1b_960x611.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nVb5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ab52c5-3be9-4f89-9460-4a4c44c16e1b_960x611.png 424w, https://substackcdn.com/image/fetch/$s_!nVb5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ab52c5-3be9-4f89-9460-4a4c44c16e1b_960x611.png 848w, https://substackcdn.com/image/fetch/$s_!nVb5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ab52c5-3be9-4f89-9460-4a4c44c16e1b_960x611.png 1272w, https://substackcdn.com/image/fetch/$s_!nVb5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ab52c5-3be9-4f89-9460-4a4c44c16e1b_960x611.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nVb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ab52c5-3be9-4f89-9460-4a4c44c16e1b_960x611.png" width="960" height="611" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68ab52c5-3be9-4f89-9460-4a4c44c16e1b_960x611.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:611,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:143478,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/209208587?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ab52c5-3be9-4f89-9460-4a4c44c16e1b_960x611.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nVb5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ab52c5-3be9-4f89-9460-4a4c44c16e1b_960x611.png 424w, https://substackcdn.com/image/fetch/$s_!nVb5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ab52c5-3be9-4f89-9460-4a4c44c16e1b_960x611.png 848w, https://substackcdn.com/image/fetch/$s_!nVb5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ab52c5-3be9-4f89-9460-4a4c44c16e1b_960x611.png 1272w, https://substackcdn.com/image/fetch/$s_!nVb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ab52c5-3be9-4f89-9460-4a4c44c16e1b_960x611.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;">View the graphic above <a href="https://jerryng.dev/assets/substacks/buttons/g-3a498a/">here</a>. </p><p>The actual rendering of a button is actually exactly how you would expect it to work. Your browser takes HTML text, reads it, and then creates a tree of elements (DOM) and then creates nodes whenever it recognizes a tag. It maps those tags with a lookup table thats built into the browser, and then just wires how its supposed to work accordingly. Early versions of browsers used the operating system&#8217;s UI to draw the actual clickable button in the styling of the operating system. </p><p></p><h2>Formalization of a Button</h2><p>Hilariously, a <code>&lt;button&gt;</code> wasn&#8217;t fully defined until 1997 along with HTML 4.0, but it effectively became what we see today. The key innovations really are just the ability to click on it with more than just a mouse, and render it without an operating system toolkit. Instead, you can now use CSS and rendering engines instead of calling out to the operating system. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sHJE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9697ed8-2143-43e8-945a-dd6102303007_960x652.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sHJE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9697ed8-2143-43e8-945a-dd6102303007_960x652.png 424w, https://substackcdn.com/image/fetch/$s_!sHJE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9697ed8-2143-43e8-945a-dd6102303007_960x652.png 848w, https://substackcdn.com/image/fetch/$s_!sHJE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9697ed8-2143-43e8-945a-dd6102303007_960x652.png 1272w, https://substackcdn.com/image/fetch/$s_!sHJE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9697ed8-2143-43e8-945a-dd6102303007_960x652.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sHJE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9697ed8-2143-43e8-945a-dd6102303007_960x652.png" width="960" height="652" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9697ed8-2143-43e8-945a-dd6102303007_960x652.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:652,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:140095,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://articles.jerryng.dev/i/209208587?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9697ed8-2143-43e8-945a-dd6102303007_960x652.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sHJE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9697ed8-2143-43e8-945a-dd6102303007_960x652.png 424w, https://substackcdn.com/image/fetch/$s_!sHJE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9697ed8-2143-43e8-945a-dd6102303007_960x652.png 848w, https://substackcdn.com/image/fetch/$s_!sHJE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9697ed8-2143-43e8-945a-dd6102303007_960x652.png 1272w, https://substackcdn.com/image/fetch/$s_!sHJE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9697ed8-2143-43e8-945a-dd6102303007_960x652.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;">View the more modern interactive <a href="https://jerryng.dev/assets/substacks/buttons/g-1a1557/">here.</a></p><p>Boringly enough, CSS is just another set of text that gets parsed and then creates an appearance based on a tree of style rules (CSSOM). There&#8217;s a bunch of traversal-ing that happens through the DOM and through the CSSOM as they combine into a render tree, and a layout procedure that occurs before everything is finally painted into pixels. But even after things are turned into pixels, there&#8217;s still some JavaScript thing that runs to connect your button to the planned outcome of that button. </p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://articles.jerryng.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Stacked Diffs and Valorant]]></title><description><![CDATA[Beautiful (when it works...)]]></description><link>https://articles.jerryng.dev/p/stacked-diffs-and-valorant</link><guid isPermaLink="false">https://articles.jerryng.dev/p/stacked-diffs-and-valorant</guid><dc:creator><![CDATA[Jerry Ng]]></dc:creator><pubDate>Tue, 07 Apr 2026 02:31:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Bg61!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc20e5cf2-fc87-404f-92cb-42d307ef8628_1440x811.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Stacked diffs are often cited as a notable <a href="https://newsletter.pragmaticengineer.com/p/stacked-diffs">missing workflow of git and Github</a>. The idea is relatively simple in that you are creating an impromptu dev branch and reviewing the changes before eventually pulling that dev branch into your repository. </p><p>The reason that they are a core feature I wanted to build into nugit is because of how startup culture works. In startups, pretty much everyone is a developer. Your manager is a developer, your marketer is a developer, your CTO is a developer. Everyone is focused on making things happen and building out the functionality of a new system. That means everyone is focused on building. </p><p>Reviewing becomes secondary and is a huge context switch cost. The more time spent reviewing means the more time spent not building. But if you don&#8217;t review properly you can break production and everyone will hate their lives. </p><p>Stacked diffs are effectively a way of just organizing your features as you build them so you don&#8217;t have to wait for the reviews before you continue building on top of features you need to create. If there&#8217;s changes you need to make early in the stack, you can easily propagate those changes to the downstream branches. This more or less already handled in Github from a coder perspective. The issue is as a reviewer.</p><h2>A Brief Aside</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Bg61!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc20e5cf2-fc87-404f-92cb-42d307ef8628_1440x811.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Bg61!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc20e5cf2-fc87-404f-92cb-42d307ef8628_1440x811.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Bg61!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc20e5cf2-fc87-404f-92cb-42d307ef8628_1440x811.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Bg61!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc20e5cf2-fc87-404f-92cb-42d307ef8628_1440x811.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Bg61!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc20e5cf2-fc87-404f-92cb-42d307ef8628_1440x811.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Bg61!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc20e5cf2-fc87-404f-92cb-42d307ef8628_1440x811.jpeg" width="1440" height="811" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c20e5cf2-fc87-404f-92cb-42d307ef8628_1440x811.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:811,&quot;width&quot;:1440,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Making VAL Console across Sydney, Seattle, Singapore, and LA | Riot Games&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Making VAL Console across Sydney, Seattle, Singapore, and LA | Riot Games" title="Making VAL Console across Sydney, Seattle, Singapore, and LA | Riot Games" srcset="https://substackcdn.com/image/fetch/$s_!Bg61!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc20e5cf2-fc87-404f-92cb-42d307ef8628_1440x811.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Bg61!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc20e5cf2-fc87-404f-92cb-42d307ef8628_1440x811.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Bg61!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc20e5cf2-fc87-404f-92cb-42d307ef8628_1440x811.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Bg61!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc20e5cf2-fc87-404f-92cb-42d307ef8628_1440x811.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>With respect to video games, I think of stacked diffs as timing a play as a lurker in a tactical shooter like Valorant. Lurkers need to be able to move in parallel with the team, but at their own pace. They have a different set of context and want to move as fast as possible but lurkers heavily rely on your team matching your pace. The <strong>key idea</strong> is that lurkers are <strong>amazing </strong>to work with <strong>when they&#8217;re good at it</strong>, but they&#8217;re <strong>terrible </strong>to work with<strong> when they&#8217;re bad at it.</strong> If they go to slow, you just get caught and are ineffective because not enough noise was created to distract for you. If they move to fast, then the round is effectively over before you can make an impact. </p><p>The <strong>issue with the current workflow for PRs</strong> is that the team is moving really fast but no one is matching each others pace so being effective just ends up being extremely painful.  <strong>It&#8217;s impossible to move at the right speed, </strong>which makes plays like this impossibly difficult to manifest (for a software team). </p><div id="youtube2-ARxsnmvWfk8)" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ARxsnmvWfk8)&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ARxsnmvWfk8)?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p style="text-align: center;"><em>Effective lurking feels criminal</em></p><h2>How it works in nugit</h2><p>When building it into nugit, I decided to manifest stack diffs through stacking PRs to take advantage of a Github user&#8217;s familiarity with the idea where you can make a PR and have the base be anything, including the default branch.</p><p>When you&#8217;re reviewing a stack in Github, for a stack of 3 PRs, you have to either have 3 tabs open or navigate in and out of PRs over and over to get context on whats happening. You get the bare minimum context from the Github PR review screen as it is, and this just drastically cranks up the pain. If each PR was isolated it would be fine, but when you&#8217;re two PRs deep on your stack and the last PR draws from both the previous PRs in different files, you&#8217;ll be hard pressed to easily understand the changes without significant mental overhead. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sufv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d39e54d-ea06-421b-83bd-7feb020eed2b_1223x765.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sufv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d39e54d-ea06-421b-83bd-7feb020eed2b_1223x765.png 424w, https://substackcdn.com/image/fetch/$s_!sufv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d39e54d-ea06-421b-83bd-7feb020eed2b_1223x765.png 848w, https://substackcdn.com/image/fetch/$s_!sufv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d39e54d-ea06-421b-83bd-7feb020eed2b_1223x765.png 1272w, https://substackcdn.com/image/fetch/$s_!sufv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d39e54d-ea06-421b-83bd-7feb020eed2b_1223x765.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sufv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d39e54d-ea06-421b-83bd-7feb020eed2b_1223x765.png" width="1223" height="765" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d39e54d-ea06-421b-83bd-7feb020eed2b_1223x765.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:765,&quot;width&quot;:1223,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76995,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jerryng1.substack.com/i/193423839?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d39e54d-ea06-421b-83bd-7feb020eed2b_1223x765.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sufv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d39e54d-ea06-421b-83bd-7feb020eed2b_1223x765.png 424w, https://substackcdn.com/image/fetch/$s_!sufv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d39e54d-ea06-421b-83bd-7feb020eed2b_1223x765.png 848w, https://substackcdn.com/image/fetch/$s_!sufv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d39e54d-ea06-421b-83bd-7feb020eed2b_1223x765.png 1272w, https://substackcdn.com/image/fetch/$s_!sufv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d39e54d-ea06-421b-83bd-7feb020eed2b_1223x765.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><em>Stack of PRs are open on the left with file exploration on the right</em></p><p>I added a stack view specifically to cover this situation. You can easily thumb between PRs to be able to see what files are changed between the two while looking at the directory. This gets me 80% of what I want when I first look at a stack. I just want to know what the differences between PRs are in terms of the files they&#8217;re effecting, because I already know the code base and can pick out if theres files missing that need to be changed to roll out a described feature. </p><p>If you want to try nugit, you can find it <a href="https://github.com/jerrying123/nugit">here</a>.<br><br></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://articles.jerryng.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Swimming (in code) and nugit]]></title><description><![CDATA[I wish someone else made this]]></description><link>https://articles.jerryng.dev/p/swimming-in-code-and-nugit</link><guid isPermaLink="false">https://articles.jerryng.dev/p/swimming-in-code-and-nugit</guid><dc:creator><![CDATA[Jerry Ng]]></dc:creator><pubDate>Tue, 07 Apr 2026 02:18:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zgEi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae7a206-e885-4536-aff1-6c00d2417121_860x456.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The software development cycle has felt so much more painful in the past year relative to what its felt like in the past. There have always been pain points that were acknowledged and seen as the cost of doing business. Complicated merge conflicts, lack of proper testing coverage, missing documentation, etc. AI coding seemed to have solve a few of these things just based on the ease of generating more stuff. But in turn, it has led to a dramatic increase in how much code needs to be reviewed, both by the creator but also by people who are reviewers on Pull Requests (PRs).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zgEi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae7a206-e885-4536-aff1-6c00d2417121_860x456.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zgEi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae7a206-e885-4536-aff1-6c00d2417121_860x456.png 424w, https://substackcdn.com/image/fetch/$s_!zgEi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae7a206-e885-4536-aff1-6c00d2417121_860x456.png 848w, https://substackcdn.com/image/fetch/$s_!zgEi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae7a206-e885-4536-aff1-6c00d2417121_860x456.png 1272w, https://substackcdn.com/image/fetch/$s_!zgEi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae7a206-e885-4536-aff1-6c00d2417121_860x456.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zgEi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae7a206-e885-4536-aff1-6c00d2417121_860x456.png" width="860" height="456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cae7a206-e885-4536-aff1-6c00d2417121_860x456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:456,&quot;width&quot;:860,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:134305,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jerryng1.substack.com/i/193423509?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae7a206-e885-4536-aff1-6c00d2417121_860x456.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zgEi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae7a206-e885-4536-aff1-6c00d2417121_860x456.png 424w, https://substackcdn.com/image/fetch/$s_!zgEi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae7a206-e885-4536-aff1-6c00d2417121_860x456.png 848w, https://substackcdn.com/image/fetch/$s_!zgEi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae7a206-e885-4536-aff1-6c00d2417121_860x456.png 1272w, https://substackcdn.com/image/fetch/$s_!zgEi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae7a206-e885-4536-aff1-6c00d2417121_860x456.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><em>We don&#8217;t have to discuss the sub 90% uptime</em></p><p>The existing GitHub UI for PRs has largely been unchanged for well over a decade. It works, it&#8217;s familiar to people, it&#8217;s inoffensive. But it&#8217;s just not enough anymore. </p><p>Picture a typical week on a fast-moving software startup team&#8212;the sort people would call &#8220;scrappy.&#8221; You&#8217;re clocking in Monday morning and building out a feature corresponding to a ticket, test it, and set up the PR by lunch. You ping your manager to review it and they say they&#8217;ll review it ASAP. Cool. Time to start the next ticket which involves building a new feature on top of what you built this morning. You knock it out before you clock out for the day and you ping your manager again. They&#8217;ll review it ASAP. Fast forward to tomorrow and by end of day you&#8217;ve knocked out another two features, each feature extending from the previous. </p><p>It&#8217;s now the middle of the week and your manager can finally look at your PRs. They find an issue with a function you wrote in the first PR. They message you on slack saying they want the inputs and outputs changed slightly. But PRs 2-4 that you wrote all rely on this function. </p><p>Another message comes in and they say &#8220;oh also there&#8217;s merge conflicts.&#8221; Someone else got their PR in before you. Maybe they changed some of the same files? Worse they changed the same functions. And now you have to resolve conflicts for your entire PR stack. You&#8217;ve gone from finishing 4 tickets before Wednesday to getting nearly nothing done. </p><p>It&#8217;s a table flipping moment. Why couldn&#8217;t your manager just review faster?</p><p>Turns out the manager has been neck deep in PRs from the rest of your team and they&#8217;re just barely staying afloat. One of your teammates is a new engineer fresh from college. They don&#8217;t even separate different features to different PRs yet.  They&#8217;re all combined in one. It&#8217;s a 4000 line diff. Time your manager spends reviewing code now directly correlates with dissatisfaction with their job and a desire to leave the role. </p><p>No one wins in this situation. I&#8217;m also not making a novel observation.  </p><p><a href="https://graphite.com/">Graphite</a> is attempting to solve these issues, but they are no longer opensource. <a href="https://github.com/ezyang/ghstack">GH Stack</a> is open source  but it breaks the usage of the Github UI so utilizing the tool requires a commitment of the whole team. </p><p>To fill the void and solve my annoyances, I made something called <a href="https://github.com/jerrying123/nugit">nugit</a> that builds on top of Github with the goal of integrating seamlessly with existing workflows, so I can benefit from using it on projects I care about. Its open source so anyone can fork it (I won&#8217;t be accepting external PRs). Follow its development and my shilling of it here.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://articles.jerryng.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Github and Super Smash Bros. Melee (2001) ]]></title><description><![CDATA[Successful Carelessness]]></description><link>https://articles.jerryng.dev/p/github-and-super-smash-bros-melee</link><guid isPermaLink="false">https://articles.jerryng.dev/p/github-and-super-smash-bros-melee</guid><dc:creator><![CDATA[Jerry Ng]]></dc:creator><pubDate>Mon, 02 Mar 2026 04:13:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3ONX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F577b1100-a5d8-4b57-9d02-d958c9b6173c_1125x417.bin" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3ONX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F577b1100-a5d8-4b57-9d02-d958c9b6173c_1125x417.bin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3ONX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F577b1100-a5d8-4b57-9d02-d958c9b6173c_1125x417.bin 424w, https://substackcdn.com/image/fetch/$s_!3ONX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F577b1100-a5d8-4b57-9d02-d958c9b6173c_1125x417.bin 848w, https://substackcdn.com/image/fetch/$s_!3ONX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F577b1100-a5d8-4b57-9d02-d958c9b6173c_1125x417.bin 1272w, https://substackcdn.com/image/fetch/$s_!3ONX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F577b1100-a5d8-4b57-9d02-d958c9b6173c_1125x417.bin 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3ONX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F577b1100-a5d8-4b57-9d02-d958c9b6173c_1125x417.bin" width="1125" height="417" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/577b1100-a5d8-4b57-9d02-d958c9b6173c_1125x417.bin&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:417,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;GitHub logo PNG transparent image download, size: 1125x417px&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub logo PNG transparent image download, size: 1125x417px" title="GitHub logo PNG transparent image download, size: 1125x417px" srcset="https://substackcdn.com/image/fetch/$s_!3ONX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F577b1100-a5d8-4b57-9d02-d958c9b6173c_1125x417.bin 424w, https://substackcdn.com/image/fetch/$s_!3ONX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F577b1100-a5d8-4b57-9d02-d958c9b6173c_1125x417.bin 848w, https://substackcdn.com/image/fetch/$s_!3ONX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F577b1100-a5d8-4b57-9d02-d958c9b6173c_1125x417.bin 1272w, https://substackcdn.com/image/fetch/$s_!3ONX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F577b1100-a5d8-4b57-9d02-d958c9b6173c_1125x417.bin 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I was vibe-coding a CI/CD implementation and ran into an issue. My GitHub Runner had run out of memory while installing some packages. So naturally, I copied the logs into the chat window and immediately the build file has some new lines written that look suspiciously like malware. <a href="https://github.com/jlumbroso/free-disk-space">&#8220;free-disk-space&#8221;</a> is the name of the action. Its like something out of the early 2010s. But it isn&#8217;t malware. In fact, its used in by over 16 thousand people in their repositories to solve the same issue I had with wanting to customize a GitHub Runner. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://articles.jerryng.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The typical Ubuntu GitHub Actions runner has up to 31 GB of disk space that is used by unnecessary packages that are not needed for many builds. This action clears up that space within 3 minutes and allows you to install the more storage intensive packages that are needed for your custom builds. Again. 16 thousand developers.</p><p>GitHub Actions is has a fairly terrible reputation. It has actually served as the reason for some notable projects, like <a href="https://ziglang.org/news/migrating-from-github-to-codeberg/">Zig</a>, to migrate to alternative platforms. The system has an unreasonable number of bugs for a product that is used by millions of developers. </p><p>As Zig mentions, the GitHub CEO said <a href="https://www.businessinsider.com/github-ceo-developers-embrace-ai-or-get-out-2025-8">&#8220;Either you have to embrace the AI, or you get out of your career.&#8221;</a> Not exactly kind or supportive words for the developers that are using your platform and are asking for quality of life improvements. It&#8217;s reasonable to assume that GitHub just doesn&#8217;t care about solving pain points of users. </p><p>That lack of care is what brings me to Super Smash Bros. Melee.</p><h2>Here Comes a New Challenger</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ASDM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e99e135-f205-454c-90a9-3bf5f3f5a0ff_2000x2000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ASDM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e99e135-f205-454c-90a9-3bf5f3f5a0ff_2000x2000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ASDM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e99e135-f205-454c-90a9-3bf5f3f5a0ff_2000x2000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ASDM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e99e135-f205-454c-90a9-3bf5f3f5a0ff_2000x2000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ASDM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e99e135-f205-454c-90a9-3bf5f3f5a0ff_2000x2000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ASDM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e99e135-f205-454c-90a9-3bf5f3f5a0ff_2000x2000.jpeg" width="1456" height="1456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e99e135-f205-454c-90a9-3bf5f3f5a0ff_2000x2000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Super Smash Bros. Melee - IGN&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Super Smash Bros. Melee - IGN" title="Super Smash Bros. Melee - IGN" srcset="https://substackcdn.com/image/fetch/$s_!ASDM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e99e135-f205-454c-90a9-3bf5f3f5a0ff_2000x2000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ASDM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e99e135-f205-454c-90a9-3bf5f3f5a0ff_2000x2000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ASDM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e99e135-f205-454c-90a9-3bf5f3f5a0ff_2000x2000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ASDM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e99e135-f205-454c-90a9-3bf5f3f5a0ff_2000x2000.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Super Smash Bros. Melee was released in 2001. When it came out, it was a popular party game, targeted towards families and children in particular. However, over time, it became a binding force for competition, driven by a grass-roots community of players. </p><p>It drew a large and growing viewer-base throughout the 2010s, peaking sometime in the 2010s with over <a href="https://twitchtracker.com/games/16282">190 thousand viewers on Twitch</a>. Players were sponsored and their livelihoods were supported in part by the community because of how good they were at the game.</p><p>But, just like GitHub Actions, Super Smash Bros Melee was unsupported by the developers. In fact, Nintendo actively tried to shut down tournaments and competitions, attempting to kill the large events that served as the pinnacle of competition. This didn&#8217;t happen just <a href="https://www.polygon.com/2013/7/11/4513294/nintendo-were-trying-to-shut-down-evo-not-just-super-smash-bros-melee/">once</a>, but <a href="https://web.archive.org/web/20240808143154/https://www.twitlonger.com/show/n_1srfu4r">multiple times</a>.</p><p>Despite this, the community persisted. In fact, they modding the game heavily, adding features like <a href="https://www.patreon.com/UnclePunch">in depth training modes</a> and <a href="https://github.com/FasterMelee">netcode</a> (yes, I do see the irony in linking to a GitHub repo). These mods became staples of the community.</p><h3>Incentive Alignment</h3><p>There is a consistent theme across both of these communities. There&#8217;s the obvious: successful developers create things that are valuable to others. There&#8217;s even a lesson: even the champions of a product have thresholds for pain tolerance.</p><p>But there&#8217;s something particular about both of these stories that are notable today. It is common in startup culture to state that if you are solving a real problem, your chances of success drastically improve. The issue is that the converse does not hold true after a certain size. Dedicated communities can form around things, developing their own solutions as they&#8217;ve been left by the wayside.</p><p>On the surface, that seems like a good thing. But, when a hacked up solution becomes well known and commonly used, the moral of the story seems to become murky. These communities have entrenched these products deeper into their lives and signaled to the companies that they are not going to leave. In turn, the incentive for these companies to improve their products vanishes. </p><p>In some ways, it becomes an indicator that the story of &#8220;AI is going to replace software engineers&#8221; is a farce. GitHub has fully embraced the AI hype machine and somehow they are unable to solve pain points for their users. In a more cynical lens, it indicates that even with tool-assisted, supercharged engineers, GitHub doesn&#8217;t plan on improving parts of their product that are deeply meaningful to their users; they may be focused on margins and new flashy developments. The brand and positioning of GitHub feels questionable with that in mind. It doesn&#8217;t feel like the bastion for developers and budding engineers to show off their stuff and seek community that it once was. </p><p>In the case of Nintendo, the charitable interpretation almost leads to admiration. They are a company focused on providing children with formative life experiences in settings where they will <strong>always have fun</strong>. They refuse to support a competitive community that seeks glory and victory through hardship and anguish; because when winning matters, <strong>losing</strong> <strong>isn&#8217;t fun</strong>. Does that excuse them shutting down the joys of a community that aren&#8217;t harming people? Probably not, but at the end of the day it is a single game of the plethora of games in Nintendo&#8217;s catalog. </p><p>Now, what I can say also isn&#8217;t fun is thinking that my vibe-coded CI/CD has installed malware because a tool has a suspicious name, or relying on GitHub repos to be able to play a 25 year old game online. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://articles.jerryng.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>