<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Software Engineering on Grizzlebit</title>
  <subtitle>Ray Grasso's Blog</subtitle>
  <updated>2026-10-06T08:44:16.631392+08:00</updated>
  <id>https://www.grizzlebit.com/tags/software-engineering/feed.xml</id>
  <link rel="alternate" type="text/html" href="https://www.grizzlebit.com/tags/software-engineering/"/>
  <link rel="self" type="application/atom+xml" href="https://www.grizzlebit.com/tags/software-engineering/feed.xml"/>
  <rights>Copyright © 2026, Ray Grasso</rights>
  <author>
    <name>Ray Grasso</name>
  </author>
  <icon>https://www.grizzlebit.com/images/icon.png</icon>
  <logo>https://www.grizzlebit.com/images/icon.png</logo>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2026/07-26-the-conversation-is-the-commit/</id>
    <published>2026-07-26T13:27:38+08:00</published>
    <updated>2026-07-26T13:40:32+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>The Conversation Is the Commit ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Chad Fowler:</p>
<blockquote>
<p>Why are humans allowed to edit the output at all? If you care about provenance—about being able to trace every line of code back to a decision—then manual edits are a problem. They break the chain. They introduce code that has no record, no explanation, no origin you can inspect. So you end up in an uncomfortable place: You don’t just prefer that agents write the code. You require it. Not because agents are better programmers. But because they are the only way to guarantee that every change passes through a process that can be captured, inspected, and replayed. Humans don’t stop participating. They just move up a level. They define intent. They shape constraints. They review outcomes. But they don’t write the code directly anymore. Because the moment they do, the system forgets how it got there.</p>
</blockquote>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2026/07-26-the-conversation-is-the-commit/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/ai/">AI</a>, <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://aicoding.leaflet.pub/3mhxvpam4z22z"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2026/07-26-the-conversation-is-the-commit/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2026/07-26-the-cost-of-spas/</id>
    <published>2026-07-26T13:25:08+08:00</published>
    <updated>2026-07-26T13:40:32+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>The Cost of SPAs ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Kore Nordmann:</p>
<blockquote>
<p>This shape matters because the single biggest cost of the SPA model is that it duplicates the server. State lives twice, once in the database and once in the client store. Rendering logic lives twice, as templates on the server and components on the client. And between the two halves you must now build and version an API which exists only to feed your own frontend. For an application which is genuinely client-state-heavy, like a collaborative editor or a design tool, this duplication buys responsiveness you cannot get any other way, and it is worth every line. For a catalog with a search box it is pure overhead.</p>
</blockquote>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2026/07-26-the-cost-of-spas/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://kore-nordmann.de/blog/htmx-and-web-components-instead-of-react.html"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2026/07-26-the-cost-of-spas/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2026/07-13-what-happened-to-the-frontend/</id>
    <published>2026-07-13T11:40:30+08:00</published>
    <updated>2026-07-13T11:42:52+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>What Happened to the Frontend? ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>David Poblador i Garcia:</p>
<blockquote>
<p>Which is to say, after two decades and forty-four meters of build tools and bundlers and hydration schemes, the industry sprinted in a giant circle and arrived, slightly out of breath, back at something that looks an awful lot like the file you uploaded over FTP. The instinct didn&rsquo;t expire. The ground moved, for real reasons, and then it moved back.</p>
</blockquote>
<p>A journey in and out of the heart of darkness.</p>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2026/07-13-what-happened-to-the-frontend/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://davidpoblador.com/deep-dives/what-happened-to-the-frontend/"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2026/07-13-what-happened-to-the-frontend/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2025/11-11-knowledge-creates-technical-debt/</id>
    <published>2025-11-11T19:35:08+08:00</published>
    <updated>2025-11-11T19:36:27+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>Knowledge Creates Technical Debt ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Luke Plant:</p>
<blockquote>
<p>The “pile of technical debt” is essentially a pile of knowledge – everything we now think is bad about the code represents what we’ve learned about how to do software better. The gap between what it is and what it should be is the gap between what we used to know and what we now know.</p>
</blockquote>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2025/11-11-knowledge-creates-technical-debt/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://lukeplant.me.uk/blog/posts/knowledge-creates-technical-debt/"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2025/11-11-knowledge-creates-technical-debt/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2025/09-17-seeing-like-a-software-company/</id>
    <published>2025-09-17T08:50:49+08:00</published>
    <updated>2025-09-17T08:52:31+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>Seeing Like a Software Company ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Sean Goedecke:</p>
<blockquote>
<p>This is why tiny software companies are often much better than large software companies at delivering software: it doesn’t matter that the large company is throwing ten times the number of engineers at the problem if the small company is twenty times more efficient.</p>
<p>Why don’t large companies react to this by doing away with all of their processes? Are they stupid? No. The processes that slow engineers down are the same processes that make their work legible to the rest of the company. And that legibility (in dollar terms) is more valuable than being able to produce software more efficiently.</p>
</blockquote>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2025/09-17-seeing-like-a-software-company/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>, <a href="https://www.grizzlebit.com/tags/work-culture/">Work Culture</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://www.seangoedecke.com/seeing-like-a-software-company/"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2025/09-17-seeing-like-a-software-company/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2025/05-20-how-swifts-server-support-powers-things-cloud/</id>
    <published>2025-05-20T11:01:28+08:00</published>
    <updated>2025-05-20T11:03:19+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>How Swift&#39;s Server Support Powers Things Cloud ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Vojtěch Rylko and Werner Jainek:</p>
<blockquote>
<p>Our legacy Things Cloud service was built on Python 2 and Google App Engine. While it was stable, it suffered from a growing list of limitations. In particular, slow response times impacted the user experience, high memory usage drove up infrastructure costs, and Python’s lack of static typing made every change risky. For our push notification system to be fast, we even had to develop a custom C-based service. As these issues accumulated and several deprecations loomed, we realized we needed a change.</p>
</blockquote>
<p>They chose to rewrite using Swift on the server.</p>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2025/05-20-how-swifts-server-support-powers-things-cloud/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://www.swift.org/blog/how-swifts-server-support-powers-things-cloud/"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2025/05-20-how-swifts-server-support-powers-things-cloud/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2025/03-13-how-core-git-developers-configure-git/</id>
    <published>2025-03-13T12:16:22+08:00</published>
    <updated>2025-03-13T12:17:02+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>How Core Git Developers Configure Git ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Some nice tips in this.</p>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2025/03-13-how-core-git-developers-configure-git/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>, <a href="https://www.grizzlebit.com/tags/tools/">Tools</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://blog.gitbutler.com/how-git-core-devs-configure-git/"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2025/03-13-how-core-git-developers-configure-git/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2025/03-13-a-practitioners-guide-to-wide-events/</id>
    <published>2025-03-13T12:12:44+08:00</published>
    <updated>2025-03-13T12:15:39+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>A Practitioner&#39;s Guide to Wide Events ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Jeremy Morrell:</p>
<blockquote>
<p>Adopting Wide Event-style instrumentation has been one of the highest-leverage changes I’ve made in my engineering career. The feedback loop on all my changes tightened and debugging systems became so much easier. Systems that were scary to work on suddenly seemed a lot more manageable.</p>
</blockquote>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2025/03-13-a-practitioners-guide-to-wide-events/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://jeremymorrell.dev/blog/a-practitioners-guide-to-wide-events/"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2025/03-13-a-practitioners-guide-to-wide-events/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2024/10-07-scaling-the-linear-sync-engine/</id>
    <published>2024-10-07T19:51:24+10:00</published>
    <updated>2024-10-07T19:56:21+10:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>Scaling the Linear Sync Engine ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Fascinating deep dive into hitting and overcoming the scaling issues affecting the sync engine <a href="https://linear.app/blog/scaling-the-linear-sync-engine">Linear</a> built.</p>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2024/10-07-scaling-the-linear-sync-engine/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/software-design/">Software Design</a>, <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://www.youtube.com/watch?v=Wo2m3jaJixU"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2024/10-07-scaling-the-linear-sync-engine/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2022/09-11-the-greg-pass-strategy-for-getting-unstuck/</id>
    <published>2022-09-11T19:58:59+08:00</published>
    <updated>2024-11-04T09:50:52+10:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>The Greg Pass Strategy for Getting Unstuck ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Tony Stubblebine:</p>
<blockquote>
<p>Many things at Twitter were broken to the point that they could bring the entire site to a halt. Greg’s strategy, now distorted through multiple retellings and my own foggy memory, was to focus on short-term triage rather than long-term fixes.</p>
<p>Essentially, he realized that a collection of temporary, duct-taped fixes was the only thing that would give the Twitter team the breathing room to start working on longer-term fixes.</p>
<p>I think of this in school grade terms. Greg went looking for all the Fs and then turned them into Ds. Then he turned all the Ds into Cs and then all the Cs into Bs, etc.</p>
</blockquote>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2022/09-11-the-greg-pass-strategy-for-getting-unstuck/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/processes/">Processes</a>, <a href="https://www.grizzlebit.com/tags/productivity/">Productivity</a>, <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://betterhumans.pub/the-greg-pass-strategy-for-getting-unstuck-7f7d0e75be5d"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2022/09-11-the-greg-pass-strategy-for-getting-unstuck/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2022/08-07-evaluating-team-members-contributions-to-a-maintainable-code-base/</id>
    <published>2022-08-07T20:28:45+08:00</published>
    <updated>2026-07-24T14:03:34+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>Evaluating Team Members’ Contributions to a Maintainable Code Base ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Skills that lead to good code stewardship.</p>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2022/08-07-evaluating-team-members-contributions-to-a-maintainable-code-base/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/management/">Management</a>, <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://chelseatroy.com/2021/10/29/a-rubric-for-evaluating-team-members-contributions-to-a-maintainable-code-base/"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2022/08-07-evaluating-team-members-contributions-to-a-maintainable-code-base/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2022/05-13-agile-and-the-long-crisis-of-software/</id>
    <published>2022-05-13T20:05:13+08:00</published>
    <updated>2023-03-21T19:47:59+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>Agile and the Long Crisis of Software ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Miriam Posner:</p>
<blockquote>
<p>You could say, then, that by the late 1960s, software development was facing three crises: a crying need for more programmers; an imperative to wrangle development into something more predictable; and, as businesses saw it, a managerial necessity to get developers to stop acting so <em>weird</em>.</p>
</blockquote>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2022/05-13-agile-and-the-long-crisis-of-software/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://logicmag.io/clouds/agile-and-the-long-crisis-of-software/"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2022/05-13-agile-and-the-long-crisis-of-software/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2022/03-29-cupidfor-joyful-coding/</id>
    <published>2022-03-29T11:34:40+08:00</published>
    <updated>2026-07-24T14:03:34+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>CUPID—for Joyful Coding ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Dan North:</p>
<blockquote>
<p>The five CUPID properties are:</p>
<ul>
<li>Composable: plays well with others</li>
<li>Unix philosophy: does one thing well</li>
<li>Predictable: does what you expect</li>
<li>Idiomatic: feels natural</li>
<li>Domain-based: the solution domain models the problem domain in language and structure</li>
</ul>
</blockquote>
<p>Also this belter from Martin Fowler.</p>
<blockquote>
<p>“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”</p>
</blockquote>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2022/03-29-cupidfor-joyful-coding/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://dannorth.net/2022/02/10/cupid-for-joyful-coding/"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2022/03-29-cupidfor-joyful-coding/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2021/12-29-we-need-to-talk-about-testing/</id>
    <published>2021-12-29T15:07:54+08:00</published>
    <updated>2023-03-21T19:47:59+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>We Need to Talk About Testing ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Dan North:</p>
<blockquote>
<p>The purpose of testing is to increase confidence for stakeholders through evidence.</p>
</blockquote>
<p>…</p>
<blockquote>
<p>You are testing <em>if and only if</em> you are increasing confidence for stakeholders through evidence.</p>
</blockquote>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2021/12-29-we-need-to-talk-about-testing/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://dannorth.net/2021/07/26/we-need-to-talk-about-testing/"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2021/12-29-we-need-to-talk-about-testing/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2021/10-22-bringing-personalised-search-to-etsy/</id>
    <published>2021-10-22T09:32:39+08:00</published>
    <updated>2023-03-21T19:47:59+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>Bringing Personalised Search to Etsy ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>A look at how Etsy tailored their search results to individual customers.</p>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2021/10-22-bringing-personalised-search-to-etsy/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/software-engineering/">Software Engineering</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://codeascraft.com/2020/10/29/bringing-personalized-search-to-etsy/"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2021/10-22-bringing-personalised-search-to-etsy/"></link>
    
  </entry>
  
</feed>
