# Aha! Engineering Blog

A collection of technical posts written by the Aha! engineering team.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Design tokens: The building blocks of a design system

DevFeed: [Design tokens: The building blocks of a design system](<https://devfeed.tech/articles/design-tokens-the-building-blocks-of-a-design-system-33521.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/design-tokens-the-building-blocks-of-a-design-system>)

Published: 2026-08-18T00:00:00Z

Content type: article

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Design system](<https://devfeed.tech/topics/design-system.md>), [ui](<https://devfeed.tech/topics/ui.md>), [CSS](<https://devfeed.tech/topics/css.md>), [consistency](<https://devfeed.tech/topics/consistency.md>)

Tags: [atomic](<https://devfeed.tech/tags/atomic.md>), [component](<https://devfeed.tech/tags/component.md>), [css](<https://devfeed.tech/tags/css.md>), [design](<https://devfeed.tech/tags/design.md>), [design-system](<https://devfeed.tech/tags/design-system.md>), [source-of-truth](<https://devfeed.tech/tags/source-of-truth.md>), [structure](<https://devfeed.tech/tags/structure.md>), [tokens](<https://devfeed.tech/tags/tokens.md>), [ui](<https://devfeed.tech/tags/ui.md>), [variables](<https://devfeed.tech/tags/variables.md>)

### AI overview

This article explains how design tokens provide a shared language for visual design attributes in a scalable design system. It contrasts tokens with hard-coded values, describes primitive and semantic tokens, and discusses using the Design Tokens Community Group standard to connect design and engineering.

### Source excerpt

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,

## From slow tests to slow production: Debugging with Stackprof

DevFeed: [From slow tests to slow production: Debugging with Stackprof](<https://devfeed.tech/articles/from-slow-tests-to-slow-production-debugging-with-stackprof-33519.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/debugging-with-stack-prof>)

Published: 2026-08-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [debugging](<https://devfeed.tech/topics/debugging.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [RSpec](<https://devfeed.tech/topics/rspec.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [cpu-time](<https://devfeed.tech/tags/cpu-time.md>), [database](<https://devfeed.tech/tags/database.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [logs](<https://devfeed.tech/tags/logs.md>), [overhead](<https://devfeed.tech/tags/overhead.md>), [performance](<https://devfeed.tech/tags/performance.md>), [production-debugging](<https://devfeed.tech/tags/production-debugging.md>), [profiling](<https://devfeed.tech/tags/profiling.md>), [rspec](<https://devfeed.tech/tags/rspec.md>), [snapshots](<https://devfeed.tech/tags/snapshots.md>), [tests](<https://devfeed.tech/tags/tests.md>), [timing](<https://devfeed.tech/tags/timing.md>)

### AI overview

An investigation into tests that became six times slower traces the stall to code generating example data and Active Record callbacks. The article explains using Stackprof with RSpec to profile the test, including I/O time, and reports that the test spent 71% of its time sleeping.

### Source excerpt

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

## How do you stay familiar with the code when it's written by an LLM?

DevFeed: [How do you stay familiar with the code when it's written by an LLM?](<https://devfeed.tech/articles/how-do-you-stay-familiar-with-the-code-when-it-s-written-by-an-llm-33531.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/staying-familiar-with-the-code-when-its-written-by-an-llm>)

Published: 2026-07-16T00:00:00Z

Content type: opinion

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Large Language Model](<https://devfeed.tech/topics/llm.md>), [Development](<https://devfeed.tech/topics/development.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [code](<https://devfeed.tech/tags/code.md>), [development](<https://devfeed.tech/tags/development.md>), [llm](<https://devfeed.tech/tags/llm.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

This opinion article argues that relying heavily on LLMs to write shipped code can reduce developers' familiarity with the code, weakening their ability to remember design decisions, diagnose bugs, guide future changes, and understand dependencies such as migrations. It maintains that hands-on coding, problem solving, and refactoring build the intuition needed to remain responsible for software maintained over time.

### Source excerpt

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

## Using Claude and custom tools to streamline production support debugging

DevFeed: [Using Claude and custom tools to streamline production support debugging](<https://devfeed.tech/articles/i-m-the-agent-for-claude-now-33523.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/im-the-for-claude-now>)

Published: 2026-06-22T00:00:00Z

Content type: opinion

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Claude](<https://devfeed.tech/topics/claude.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [debugging](<https://devfeed.tech/topics/debugging.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [claude](<https://devfeed.tech/tags/claude.md>), [cli](<https://devfeed.tech/tags/cli.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [production-debugging](<https://devfeed.tech/tags/production-debugging.md>), [workflows](<https://devfeed.tech/tags/workflows.md>)

### AI overview

An Aha! engineer describes using Claude with a custom production-debugging skill to support customer tickets. The skill links to filtered logs and provides tools for configuration inspection, query analysis, and record history, while customer data is kept out of Claude.

### Source excerpt

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

## The next hit: How LLMs change the way engineers work

DevFeed: [The next hit: How LLMs change the way engineers work](<https://devfeed.tech/articles/the-next-hit-how-llms-change-the-way-engineers-work-33536.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/the-next-hit-how-llms-change-the-way-engineers-work>)

Published: 2026-06-15T00:00:00Z

Content type: opinion

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [LLMs](<https://devfeed.tech/topics/llms.md>), [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [engineering-culture](<https://devfeed.tech/topics/engineering-culture.md>)

Tags: [coding-agents](<https://devfeed.tech/tags/coding-agents.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [llms](<https://devfeed.tech/tags/llms.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>)

### AI overview

The article reflects on how LLMs and coding agents compress software development feedback loops, making substantial amounts of code appear within minutes. It argues that this speed can reduce the time engineers spend thinking deeply, evaluating their approach, and correcting course.

### Source excerpt

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

## The importance of benchmarks

DevFeed: [The importance of benchmarks](<https://devfeed.tech/articles/the-importance-of-benchmarks-33535.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/the-importance-of-benchmarks>)

Published: 2026-04-13T00:00:00Z

Content type: article

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [performance](<https://devfeed.tech/tags/performance.md>), [structure](<https://devfeed.tech/tags/structure.md>)

### AI overview

The Aha! Develop team investigated a sprint report that took 15 minutes to load and nearly froze the browser. The investigation traced the problem to inefficient progress parsing and data structures that duplicated days without events, producing a more than 100-fold performance increase after changes.

### Source excerpt

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

## The architectural trade-offs of AI code generation

DevFeed: [The architectural trade-offs of AI code generation](<https://devfeed.tech/articles/the-architectural-trade-offs-of-ai-code-generation-33534.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/the-architectural-trade-offs-of-ai-code-generation>)

Published: 2026-03-31T00:00:00Z

Content type: article

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [Code generation](<https://devfeed.tech/topics/code-generation.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Claude Code](<https://devfeed.tech/topics/claude-code.md>)

Tags: [ai-assistant](<https://devfeed.tech/tags/ai-assistant.md>), [claude-code](<https://devfeed.tech/tags/claude-code.md>), [code-generation](<https://devfeed.tech/tags/code-generation.md>), [memory](<https://devfeed.tech/tags/memory.md>), [ruby](<https://devfeed.tech/tags/ruby.md>)

### AI overview

The article examines architectural trade-offs in building Aha! Builder, an AI-powered product that generates database schemas, controllers, and views. It argues that frameworks and languages for LLM-generated code should account for token efficiency and context-window limits, and cites a Claude Code benchmark in which Ruby had the highest success rate across the tested languages.

### Source excerpt

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

## Less code, more power: Why we rolled our own React Server Components framework

DevFeed: [Less code, more power: Why we rolled our own React Server Components framework](<https://devfeed.tech/articles/less-code-more-power-why-we-rolled-our-own-react-server-components-framework-33538.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/why-we-rolled-our-own-rsc-framework>)

Published: 2026-03-17T00:00:00Z

Content type: article

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Code](<https://devfeed.tech/topics/code.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Next.js](<https://devfeed.tech/topics/next-js.md>), [React Router](<https://devfeed.tech/topics/react-router.md>), [gatsby](<https://devfeed.tech/topics/gatsby.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [developer-experience](<https://devfeed.tech/tags/developer-experience.md>), [framework](<https://devfeed.tech/tags/framework.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [performance](<https://devfeed.tech/tags/performance.md>), [react](<https://devfeed.tech/tags/react.md>)

### AI overview

Aha explains why it replaced the React framework used by its website with a handcrafted React Server Components mini-framework. The article discusses framework responsibilities such as routing, data loading, and rendering, and describes reported reductions of 90% in loaded JavaScript and JSON data and over 80% in time-to-interactive.

### Source excerpt

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%

## overitall: A Terminal UI for Process Management and Log Viewing

DevFeed: [overitall: A Terminal UI for Process Management and Log Viewing](<https://devfeed.tech/articles/when-overmind-isn-t-enough-and-i-m-over-it-all-33526.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/over-it-all>)

Published: 2026-01-27T00:00:00Z

Content type: opinion

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Tooling](<https://devfeed.tech/topics/tooling.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Processes](<https://devfeed.tech/topics/processes.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Logging](<https://devfeed.tech/topics/logging.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [observability](<https://devfeed.tech/topics/observability.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [developer](<https://devfeed.tech/tags/developer.md>), [development](<https://devfeed.tech/tags/development.md>), [logging](<https://devfeed.tech/tags/logging.md>), [observability](<https://devfeed.tech/tags/observability.md>), [process](<https://devfeed.tech/tags/process.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [tooling](<https://devfeed.tech/tags/tooling.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

The author introduces overitall, a terminal UI that combines Procfile process management with log viewing. It is presented as an alternative to overmind for terminal-first development workflows, motivated by increasingly dense and difficult-to-follow development logs.

### Source excerpt

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

## Going beyond Ruby: Writing a simple C extension

DevFeed: [Going beyond Ruby: Writing a simple C extension](<https://devfeed.tech/articles/going-beyond-ruby-writing-a-simple-c-extension-33529.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/ruby-c-extension>)

Published: 2025-12-09T00:00:00Z

Content type: tutorial

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Ruby](<https://devfeed.tech/topics/ruby.md>), [C](<https://devfeed.tech/topics/c.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [ruby](<https://devfeed.tech/tags/ruby.md>)

### AI overview

A tutorial on writing Ruby C extensions to move performance-critical code into native C, use existing C libraries, and compare Ruby and C implementations with a quicksort example.

### Source excerpt

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.

## Streaming AI responses and the incomplete JSON problem

DevFeed: [Streaming AI responses and the incomplete JSON problem](<https://devfeed.tech/articles/streaming-ai-responses-and-the-incomplete-json-problem-33532.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/streaming-ai-responses-incomplete-json>)

Published: 2025-10-22T00:00:00Z

Content type: article

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Streaming](<https://devfeed.tech/topics/streaming.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Tool](<https://devfeed.tech/topics/tool.md>), [Parser](<https://devfeed.tech/topics/parser.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [json](<https://devfeed.tech/tags/json.md>), [llm](<https://devfeed.tech/tags/llm.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [search](<https://devfeed.tech/tags/search.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [tools](<https://devfeed.tech/tags/tools.md>)

### AI overview

The article examines the incomplete JSON problem that occurs when LLMs stream tool arguments character by character. It explains why waiting for complete JSON creates poor user feedback and discusses attempts to produce parseable partial JSON in real time, including performance issues with longer responses.

### Source excerpt

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

## How we de-risked our editor upgrade

DevFeed: [How we de-risked our editor upgrade](<https://devfeed.tech/articles/how-we-de-risked-our-editor-upgrade-33520.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/derisking-editor-upgrade>)

Published: 2025-10-08T00:00:00Z

Content type: article

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [upgrade](<https://devfeed.tech/topics/upgrade.md>), [Development](<https://devfeed.tech/topics/development.md>), [Library](<https://devfeed.tech/topics/library.md>), [legacy](<https://devfeed.tech/topics/legacy.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [development](<https://devfeed.tech/tags/development.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [library](<https://devfeed.tech/tags/library.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

The article explains how a team managed the risks of upgrading a collaborative text editor built on Slate. It describes the problems caused by relying on a deprecated Slate version and maintaining a fork, including browser-related breakages and difficult-to-debug code.

### Source excerpt

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

## Solving impossible problems

DevFeed: [Solving impossible problems](<https://devfeed.tech/articles/solving-impossible-problems-33530.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/solving-impossible-problems>)

Published: 2025-09-17T00:00:00Z

Content type: tutorial

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [coding](<https://devfeed.tech/topics/coding.md>), [Extension](<https://devfeed.tech/topics/extension.md>), [API](<https://devfeed.tech/topics/api.md>), [Security](<https://devfeed.tech/topics/security.md>), [Back end](<https://devfeed.tech/topics/backend.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [backend](<https://devfeed.tech/tags/backend.md>), [build](<https://devfeed.tech/tags/build.md>), [challenges](<https://devfeed.tech/tags/challenges.md>), [extension](<https://devfeed.tech/tags/extension.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [problems](<https://devfeed.tech/tags/problems.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

An engineering article describes how to approach software features that seem impossible to build. Using the Aha! Develop TestRail extension as an example, it explains how changing controllable constraints can make difficult problems manageable.

### Source excerpt

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

## How AI-assisted development can help developers experiment and work with unfamiliar code

DevFeed: [How AI-assisted development can help developers experiment and work with unfamiliar code](<https://devfeed.tech/articles/is-ai-the-end-of-coding-as-we-know-it-or-just-another-tool-33524.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/is-ai-the-end-of-coding-or-just-another-tool>)

Published: 2025-07-14T00:00:00Z

Content type: opinion

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [coding](<https://devfeed.tech/topics/coding.md>), [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [ai-tools](<https://devfeed.tech/tags/ai-tools.md>), [code](<https://devfeed.tech/tags/code.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [rails](<https://devfeed.tech/tags/rails.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

This opinion article argues that AI-assisted development can help developers experiment with unfamiliar technologies, set up projects, learn language details, and handle tasks such as refactoring. The author describes using an AI-first editor with WebAssembly and Rust, concluding that rewriting part of the application was not yet justified.

### Source excerpt

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

## Streaming LLM Responses with Rails: SSE vs. Turbo Streams

DevFeed: [Streaming LLM Responses with Rails: SSE vs. Turbo Streams](<https://devfeed.tech/articles/streaming-llm-responses-with-rails-sse-vs-turbo-streams-33533.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/streaming-llm-responses-rails-sse-turbo-streams>)

Published: 2025-04-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>)

Tags: [llm](<https://devfeed.tech/tags/llm.md>), [rails](<https://devfeed.tech/tags/rails.md>), [sse](<https://devfeed.tech/tags/sse.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [turbo](<https://devfeed.tech/tags/turbo.md>)

### AI overview

A tutorial on streaming large language model responses in Rails applications. It compares server-sent events and Turbo Streams, explains how SSE connections and events work, and discusses implementation approaches for a demo chat application.

### Source excerpt

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

## Partitioning a large table in PostgreSQL with Rails

DevFeed: [Partitioning a large table in PostgreSQL with Rails](<https://devfeed.tech/articles/partitioning-a-large-table-in-postgresql-with-rails-33527.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/partitioning-a-large-table-in-postgresql-with-rails>)

Published: 2025-04-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Database](<https://devfeed.tech/topics/database.md>), [Amazon RDS](<https://devfeed.tech/topics/amazon-rds.md>), [backups](<https://devfeed.tech/topics/backups.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [etl](<https://devfeed.tech/topics/etl.md>), [Disaster Recovery](<https://devfeed.tech/topics/disaster-recovery.md>), [datadog](<https://devfeed.tech/topics/datadog.md>)

Tags: [active-record](<https://devfeed.tech/tags/active-record.md>), [amazon-rds](<https://devfeed.tech/tags/amazon-rds.md>), [amazon-s3](<https://devfeed.tech/tags/amazon-s3.md>), [backups](<https://devfeed.tech/tags/backups.md>), [datadog](<https://devfeed.tech/tags/datadog.md>), [disaster-recovery](<https://devfeed.tech/tags/disaster-recovery.md>), [etl](<https://devfeed.tech/tags/etl.md>), [latency](<https://devfeed.tech/tags/latency.md>), [migration](<https://devfeed.tech/tags/migration.md>), [partitioning](<https://devfeed.tech/tags/partitioning.md>), [performance](<https://devfeed.tech/tags/performance.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [rails](<https://devfeed.tech/tags/rails.md>)

### AI overview

This article explains how Aha! partitioned a very large PostgreSQL audit table used with Rails. It covers the migration strategy, operational and performance problems caused by billions of rows, and an archival process that moves audits older than 12 months to Amazon S3.

### Source excerpt

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

## Using Rails Views, Web Components, React, and Rails ViewComponents Together

DevFeed: [Using Rails Views, Web Components, React, and Rails ViewComponents Together](<https://devfeed.tech/articles/rails-views-web-components-react-why-make-a-choice-33528.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/rails-views-web-components-react>)

Published: 2025-03-03T00:00:00Z

Content type: opinion

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [React](<https://devfeed.tech/topics/react.md>), [Web Components](<https://devfeed.tech/topics/web-components.md>), [Server-side rendering](<https://devfeed.tech/topics/server-side-rendering.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [vendor lock-in](<https://devfeed.tech/topics/vendor-lock-in.md>)

Tags: [components](<https://devfeed.tech/tags/components.md>), [front-end](<https://devfeed.tech/tags/front-end.md>), [opinion](<https://devfeed.tech/tags/opinion.md>), [rails](<https://devfeed.tech/tags/rails.md>), [react](<https://devfeed.tech/tags/react.md>), [server-side-rendering](<https://devfeed.tech/tags/server-side-rendering.md>), [vendor-lock-in](<https://devfeed.tech/tags/vendor-lock-in.md>)

### AI overview

The article argues that Rails views, web components, React, and Rails ViewComponents are not mutually exclusive. It explains that each approach addresses different problems and can be combined thoughtfully, including server rendering for simpler data-display features and web components for avoiding vendor lock-in.

### Source excerpt

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?"

## Make streaming APIs easy with enumerable methods

DevFeed: [Make streaming APIs easy with enumerable methods](<https://devfeed.tech/articles/make-streaming-apis-easy-with-enumerable-methods-33525.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/making-streaming-apis-easy>)

Published: 2024-12-20T00:00:00Z

Content type: tutorial

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [large-language-model](<https://devfeed.tech/tags/large-language-model.md>), [openai](<https://devfeed.tech/tags/openai.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [streaming](<https://devfeed.tech/tags/streaming.md>)

### AI overview

This tutorial explains how Ruby enumerable methods can make streaming API responses easier to transform and compose. It uses large language model APIs, including the OpenAI chat API, as an example and describes converting block-yielded values into an enumerator.

### Source excerpt

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

## Aha!'s approach to software bugs and rapid feature delivery

DevFeed: [Aha!'s approach to software bugs and rapid feature delivery](<https://devfeed.tech/articles/we-love-bugs-and-you-should-too-33537.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/we-love-bugs>)

Published: 2024-11-14T00:00:00Z

Content type: opinion

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [bug](<https://devfeed.tech/topics/bug.md>), [Development](<https://devfeed.tech/topics/development.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Security](<https://devfeed.tech/topics/security.md>), [incident](<https://devfeed.tech/topics/incident.md>)

Tags: [bugs](<https://devfeed.tech/tags/bugs.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [security](<https://devfeed.tech/tags/security.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

The Aha! engineering team describes a culture that treats functionality bugs as an expected byproduct of shipping software quickly and as opportunities to learn from users and improve the product. It distinguishes these bugs from security incidents and emphasizes security reviews, testing, and planning.

### Source excerpt

OK, maybe "love" is a bit strong. But the Aha! engineering team has a shocking confession: We embrace bugs in our software. Our CTO, Dr. Chris Waters, often says, "If your feature ships without any bugs, you waited too long to ship it." Having work

## Transparency, autonomy, responsiveness, and education: How the Aha! engineering team works

DevFeed: [Transparency, autonomy, responsiveness, and education: How the Aha! engineering team works](<https://devfeed.tech/articles/transparency-autonomy-responsiveness-and-education-how-the-aha-engineering-team-works-33522.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/how-we-work>)

Published: 2024-10-28T00:00:00Z

Content type: opinion

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Self-organizing Team](<https://devfeed.tech/topics/self-organizing-team.md>), [Agile](<https://devfeed.tech/topics/agile.md>), [pair\_programming](<https://devfeed.tech/topics/pair-programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [agile](<https://devfeed.tech/tags/agile.md>), [approach](<https://devfeed.tech/tags/approach.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [meetings](<https://devfeed.tech/tags/meetings.md>), [pair-programming](<https://devfeed.tech/tags/pair-programming.md>), [product](<https://devfeed.tech/tags/product.md>), [programming](<https://devfeed.tech/tags/programming.md>), [security](<https://devfeed.tech/tags/security.md>), [team](<https://devfeed.tech/tags/team.md>), [teams](<https://devfeed.tech/tags/teams.md>), [transparency](<https://devfeed.tech/tags/transparency.md>), [work](<https://devfeed.tech/tags/work.md>)

### AI overview

The article explains how Aha!'s engineering team combines individual, pair, and team-based work. Engineers present their work in weekly meetings, retain ownership of code, and share knowledge across the organization. Small agile teams align with product areas and infrastructure, while rotating support responsibilities provide broader exposure. Product managers, designers, and engineers prioritize and scope work collaboratively.

### Source excerpt

Organizations have many different ways to approach how teammates write code. You have individual silos, pair programming, team-based work, and black box interfaces where you have no idea how the other team is structured. We use a mix of these approa