<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Aha! Engineering Blog</title>
        <link>https://www.aha.io/engineering</link>
        <description>A collection of technical posts written by the Aha! engineering team.</description>
        <lastBuildDate>Mon, 12 Oct 2026 14:12:24 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Aha! Engineering Blog</title>
            <url>https://www.aha.io/aha_square_300.png</url>
            <link>https://www.aha.io/engineering</link>
        </image>
        <copyright>2025 Aha! Labs Inc.</copyright>
        <atom:link href="https://www.aha.io/engineering/rss.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Is the tech stack irrelevant?]]></title>
            <link>https://www.aha.io/engineering/articles/is-the-tech-stack-irrelevant</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/is-the-tech-stack-irrelevant</guid>
            <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[You might have heard about the opening keynote at Rails World a couple of weeks ago. We are a Ruby on Rails shop, so some of our engineers were there. David Heinemeier Hansson (who created Ruby on Rails) talked about HEY, the email product his compa]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[Coding AI without deterministic outcomes]]></title>
            <link>https://www.aha.io/engineering/articles/coding-ai-without-deterministic-outcomes</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/coding-ai-without-deterministic-outcomes</guid>
            <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[I recently had a conversation with an engineer on our team about working with AI. He was frustrated with some of the work he had been doing on AI features, and a lot of what he was saying resonated with me. He was putting into words things that I ha]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[Design tokens: The building blocks of a design system]]></title>
            <link>https://www.aha.io/engineering/articles/design-tokens-the-building-blocks-of-a-design-system</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/design-tokens-the-building-blocks-of-a-design-system</guid>
            <pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Implementing a design system at scale is often less about the pixels and more about the language we use to describe them. As a Senior Software Engineer at Aha! I've spent a lot of time thinking about how we can build a UI that is not only beautiful,]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[From slow tests to slow production: Debugging with Stackprof]]></title>
            <link>https://www.aha.io/engineering/articles/debugging-with-stack-prof</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/debugging-with-stack-prof</guid>
            <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[One morning, a developer announced in our Slack channel that some tests were failing on our main branch. The cause of the failures was not obvious. No recent PRs seemed related, and neither the code nor the tests had changed in a long time. The test]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[How do you stay familiar with the code when it's written by an LLM?]]></title>
            <link>https://www.aha.io/engineering/articles/staying-familiar-with-the-code-when-its-written-by-an-llm</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/staying-familiar-with-the-code-when-its-written-by-an-llm</guid>
            <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[If you used an LLM to write code you shipped a month ago, how well do you remember it? Would you realize if the code you committed today would break it? If a customer reported a bug, would you quickly think, "Oh, I know what that is" in the same way]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[I'm the agent for Claude now]]></title>
            <link>https://www.aha.io/engineering/articles/im-the-for-claude-now</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/im-the-for-claude-now</guid>
            <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Every seven weeks or so, each Aha! engineer takes a week of support rotation. I caught myself doing something dumb during my last one. A ticket came in. I clicked over to our production log viewer, narrowed the time range, and started piecing togeth]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[The next hit: How LLMs change the way engineers work]]></title>
            <link>https://www.aha.io/engineering/articles/the-next-hit-how-llms-change-the-way-engineers-work</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/the-next-hit-how-llms-change-the-way-engineers-work</guid>
            <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Some people are drawn to software engineering, and not everyone is like that. But a common characteristic among engineers (myself included) is the thrill of building something and seeing it work. Maybe it is not the whole system, but some piece of i]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[The importance of benchmarks]]></title>
            <link>https://www.aha.io/engineering/articles/the-importance-of-benchmarks</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/the-importance-of-benchmarks</guid>
            <pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Late last year, the  Aha! Develop team added support for team line-level reporting. During a team demo in the run-up to the release, we discovered one of our internal sprint reports was taking 15 minutes to load, almost freezing the browser in the p]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[The architectural trade-offs of AI code generation]]></title>
            <link>https://www.aha.io/engineering/articles/the-architectural-trade-offs-of-ai-code-generation</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/the-architectural-trade-offs-of-ai-code-generation</guid>
            <pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[We recently introduced  Aha! Builder, our new AI-powered product for creating prototypes and business applications. It allows you to describe the app you need, and Elle (our AI assistant) builds it for you. But Elle is not just a UI trick. When a us]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[Less code, more power: Why we rolled our own React Server Components framework]]></title>
            <link>https://www.aha.io/engineering/articles/why-we-rolled-our-own-rsc-framework</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/why-we-rolled-our-own-rsc-framework</guid>
            <pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[We ripped out the mature React framework powering  this website and built our own mini framework with a few handcrafted files. By most accounts, that's the last thing you should do. But it reduced the amount of JavaScript and JSON data loaded by 90%]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[When overmind isn't enough and I'm over it all]]></title>
            <link>https://www.aha.io/engineering/articles/over-it-all</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/over-it-all</guid>
            <pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[I built a tool called  overitall ( oit). It's a terminal UI that combines process management with log viewing — think overmind plus a log viewer (like  lnav) that can actually keep up with modern, noisy apps. If you're a terminal‑first developer dro]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[Going beyond Ruby: Writing a simple C extension]]></title>
            <link>https://www.aha.io/engineering/articles/ruby-c-extension</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/ruby-c-extension</guid>
            <pubDate>Tue, 09 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Ruby is a high-level language with elegant syntax. But sometimes, performance-critical tasks can be slow in pure Ruby. Writing a C extension lets us move performance-critical code into native C for speed while also tapping into existing C libraries.]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[Streaming AI responses and the incomplete JSON problem]]></title>
            <link>https://www.aha.io/engineering/articles/streaming-ai-responses-incomplete-json</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/streaming-ai-responses-incomplete-json</guid>
            <pubDate>Wed, 22 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Modern LLM providers can stream their responses. This is great for user experience — instead of a loading spinner, users see the response being generated in real time. They can also call external functions (also called "tools"): search your database]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[How we de-risked our editor upgrade]]></title>
            <link>https://www.aha.io/engineering/articles/derisking-editor-upgrade</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/derisking-editor-upgrade</guid>
            <pubDate>Wed, 08 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Any seasoned software engineer will tell you that full rewrites are a bad idea. More often than not, they are abandoned after wasting a significant amount of resources on them. This is especially true if what you're pitching for a rewrite is the bac]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[Solving impossible problems]]></title>
            <link>https://www.aha.io/engineering/articles/solving-impossible-problems</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/solving-impossible-problems</guid>
            <pubDate>Wed, 17 Sep 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[If you've been working on software for any reasonable length of time, you might have had an experience like this: You're looking at a feature, and you have no idea how to build it. You have the context and understanding you need. But it's all pointi]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[Is AI the end of coding as we know it, or just another tool?]]></title>
            <link>https://www.aha.io/engineering/articles/is-ai-the-end-of-coding-or-just-another-tool</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/is-ai-the-end-of-coding-or-just-another-tool</guid>
            <pubDate>Mon, 14 Jul 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[The rapid advancement of AI tools has left many developers worried about the future of their careers. AI is either coming to take your job, or it's going to make you 10 times more productive — if you learn to use it effectively. Nobody wants to be i]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[Streaming LLM Responses with Rails: SSE vs. Turbo Streams]]></title>
            <link>https://www.aha.io/engineering/articles/streaming-llm-responses-rails-sse-turbo-streams</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/streaming-llm-responses-rails-sse-turbo-streams</guid>
            <pubDate>Wed, 30 Apr 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[In the world of Rails development, integrating large language models (LLMs) like OpenAI's GPT has become increasingly common. One challenge developers face is streaming these responses efficiently to provide a smooth user experience. This post will]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[Partitioning a large table in PostgreSQL with Rails]]></title>
            <link>https://www.aha.io/engineering/articles/partitioning-a-large-table-in-postgresql-with-rails</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/partitioning-a-large-table-in-postgresql-with-rails</guid>
            <pubDate>Mon, 28 Apr 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Keeping a reliable history of changes is essential for our users. They need to know when a record was updated, who made the change, and why. They could be anxiously awaiting a notification about a dependency that is blocking their work. Maybe they w]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[Rails views, web components, React. Why make a choice?]]></title>
            <link>https://www.aha.io/engineering/articles/rails-views-web-components-react</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/rails-views-web-components-react</guid>
            <pubDate>Mon, 03 Mar 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[How many times have you heard or read statements like these in tech
discussions?"Everything needs to be a single-page app these days. Server-rendered
templates are holding you back.""Web components are the future. Why tie yourself to any framework?"]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
        <item>
            <title><![CDATA[Make streaming APIs easy with enumerable methods]]></title>
            <link>https://www.aha.io/engineering/articles/making-streaming-apis-easy</link>
            <guid isPermaLink="true">https://www.aha.io/engineering/articles/making-streaming-apis-easy</guid>
            <pubDate>Fri, 20 Dec 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[When you first discover Ruby on Rails, some things might strike you right away: namely the large number of  enumerable methods and the blocks to run code in the middle of another method. Those features helped me translate my thoughts directly into c]]></description>
            <enclosure length="0" type="image/png" url="https://www.aha.io/assets/aha-engineering-c7zx3mz8b.png"/>
        </item>
    </channel>
</rss>