Engineering blog with Ruby and Rails insights
78 articlesIn the classic holiday story, the Grinch is often seen as the villain, a character who initially stands against the joy and celebration of…
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…
In the world of Rails development, integrating large language models (LLMs) like OpenAI's GPT has become increasingly common. One challenge…
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…
How many times have you heard or read statements like these in tech discussions? "Everything needs to be a single-page app these days…
When you first discover Ruby on Rails, some things might strike you right away: namely the large number of enumerable methods and the blocks…
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…
Organizations have many different ways to approach how teammates write code. You have individual silos, pair programming, team-based work…
As a company whose product is built on top of Ruby on Rails, conducting a major version upgrade of the underlying framework is just about…
On the Aha! team, The Responsive Method (TRM) guides our interactions with customers and one another. Responding to requests quickly and…
I heard a ring, and my heart rate spiked to 132. It was Tom Bailey, a colleague on the Product Success team. I prepared myself for a…
Feature delivery can be impacted by many factors. Some are readily visible, but others are more nuanced — or buried in mountains of data…
Our product team is busy adding many great new features to Aha! Whiteboards and Aha! Knowledge — including wireframes, voting, and…
Do we need a monorepo? When I first joined Aha!, I was surprised by how well-structured the engineering onboarding program was. I spent…
Our team at Aha! loves using Aha! software. It's not only a great way to build our own lovable product, but it also helps us to find rough…
Normally when you encounter a bug with Ruby, or any other interpreted language for that matter, using the language's provided debugging…
In David Bayles and Ted Orland's book, Art & Fear, there's a captivating story that has always stuck with me. This is a story that…
Ruby's Enumerable methods help you make powerful code simple — by filtering, transforming, and processing data like the best engineers do…
What is a race condition? I searched for a good definition of a race condition and this is the best I found: A race condition is…
Take your command-line utilities to the next level with these Ruby gems Ruby has always been a great general-purpose scripting language and…
As you stare into an empty text field, the blinking cursor invites you to engage in a crucial part of being a professional software engineer…
An odd coincidence On March 20th, ChatGPT users reported seeing conversations that were not their own. Just a few weeks earlier I had solved…
Many months ago, our team had to have a hard conversation about Cypress. Cypress was the new kid in our CI pipeline, a browser integration…
Let us start by saying that CSS is hard. It seems that no matter how skilled you get, you will still run into situations that completely…
I have worked in many different environments throughout my career. I have worked in the same building as my teammates and even for a company…
In a lot of newer projects, we use our GraphQL API. This is the same API you use when you're building Aha! Develop extensions. GraphQL has…
As more users opt for mobile browsing, responsive design becomes more important — even for applications that are primarily used on a desktop…
Solving a problem is great — but keeping it from coming back is even better. As we resolve issues in our code base, we often consider how to…
Our engineering team builds the Aha! suite using a Rails monolith. We carefully weighed a number of options before determining that this…
Striker and goalie. Offense and defense. Deploy and recalibrate. Many disciplines have dichotomy between the tasks that accomplish a goal…
The term "technical debt" has entered the standard lexicon of programming and software project development and has often been called out for…
Software engineers are always eager to make major contributions upon joining a new company. But that's not always realistic with a large…
When it comes to job processing, timing is everything. Running jobs in the background helps us remove the load from the web servers handling…
Aha! has evolved significantly over the past several years. What began as a single-product offering is now a suite of world-class product…
An important aspect of developer tools is being able to visualize work and progress in various ways. A well-known example is the burndown…
When our engineering team first began conceptualizing Aha! Develop, we were faced with a monumental question. How should we implement the…
Making something fullscreen in browsers is surprisingly easy. All you have to do is call requestFullscreen() on any DOM node. For example…
Feed the planner, trust the plan Of all the Aha! engineering tool expenses, the money I'm happiest to spend is on a big RDS instance running…
Aha! dynamic stagings Our team at Aha! recently gained the ability to quickly create and destroy dynamic staging environments. Our platform…
There is nothing quite like friendly competition to refuel your passions. Our team at Aha! recently sponsored 2021's Advent of Code, an…
Aha! has now reached $100 million in annual recurring revenue with three separate software products in our available suite. We did this all…
Our old system architecture here at Aha! has served us well. On top of RDS, ElastiCache, and other AWS services, we had hundreds of EC…
Developers love working with dates. One day, someone asked themselves, what if the year didn’t start in January, but could start in any…
So you want to implement a dark theme for your app? All your favorite applications have it and your app should too. But will it be trivial…
N+1 queries come up very often when working with Rails. N+1 queries are a silent performance tax both for your application and for…
Since the dawn of the internet, web developers have had an unfulfilled desire. We've wanted "living elements" that can automatically react…
First impressions matter a lot when you're launching a new product. Optimizing for time-until-Aha! is no easy feat. This is uniquely true…
Aha! Develop is our extendable agile development tool. You can completely customize the UI, workflow, and integrations through extensions to…
Some people, when faced with an API problem, think “I’ll use GraphQL!” And now they have N+1 problems. N+1 problems occur when you want to…
Many SaaS providers will happily sell you a turn-key log management system, and in the early days of a startup when you value time over…