Systems | Development | Analytics | API | Testing

Test-Commit-Revert: A useful workflow for testing legacy code in Ruby

It happens to all of us. As software projects grow, parts of the production code we ship end up without a comprehensive test suite. When you take another look at the same area of code after a few months, it may be difficult to understand; even worse, there might be a bug, and we don't know where to begin fixing it. Modifying production code without tests is a major challenge.

Tips for upgrading Python/Django versions in existing apps

Python is a robust and powerful programming language. In addition to machine learning, Python can be used for tasks such as web scraping, image processing, scientific computing, and much more. A framework such as Django, which is built on top of Python, enables you to build beautiful web applications—top websites such as Dropbox, Instagram, and YouTube use Django.

Honeybadger Insights Parameterized Queries

Make your Honeybadger Insights system dashboards dynamic with parameterized widget queries. In this walkthrough, Ben shows how to take a dashboard built from data reported by the Honeybadger CLI agent — load average, memory used, disk used across a fleet of hosts — and filter the whole view down to a single host with one parameter. What you’ll see: One dashboard, many views — no duplicate widgets, just a shareable URL.

Errors in Python: Types, Causes, and Examples

Errors in Python are issues in a program that cause incorrect results or prevent proper execution. Some Python errors are loud and obvious, and your code barely gets started before it throws an error that tells you exactly what went wrong. Other errors are more subtle, allowing your Python program to run without complaints while silently producing incorrect results that only become apparent later.

Cross-cluster associations in Rails

One of the beauties of the Rails framework is the ability to utilize Ruby on Rails associations in your models. These associations allow you to access collections of records in your code with pleasant syntax, abstracting away the need to write underlying SQL queries. That abstraction holds as long as all your data lives in one place. The moment your tables are spread across separate database clusters, certain association types stop working.

Building a Django Chat App with WebSockets

Django is well known for being used to develop servers for HTTP connections and requests for applications. Unfortunately, when building Django chat app or any chat app that requires the connection to remain open for a two-way connection, using an HTTP connection is inefficient. WebSockets provide a means of opening a two-way connection between the client and the server so that all users connected to the open network can get related data in real time.

Heroku logs and you: a complete guide

Heroku's logging system is your primary window into application behavior, but its ephemeral nature and streaming architecture can feel mysterious at first. This guide walks through everything developers need to know about Heroku logs, from understanding what they are and how to access them, to working around their limitations and forwarding them to external services like Honeybadger Insights for complete observability. Read on to master Heroku logging.

FastAPI error handling: types, methods, and best practices

Errors and exceptions are inevitable in any software, and FastAPI applications are no exception. Errors can disrupt the normal flow of execution, expose sensitive information, and lead to a poor user experience. Hence, it is important to implement robust error-handling mechanisms in FastAPI applications. In this article, we will discuss the different types of FastAPI errors to help you understand their causes and effects.

Code coverage vs. test coverage in Python

If you have been writing tests for a while, you have probably encountered code coverage and test coverage. These concepts can be difficult to differentiate because they are somewhat intertwined. In this article, you will learn what code coverage vs test coverage means, and the basis of these concepts. You will also learn the key differences between code coverage and test coverage in Python. You would discover tools, techniques, and best practices to improve your testing strategy.

How to build a Copilot agent

A customer recently shared their debugging workflow with me. When an error shows up in Honeybadger, they import it to Linear, manually add context about where to look in the codebase, then assign GitHub Copilot to investigate. It works, but they asked a good question: could Copilot just access Honeybadger directly? The answer is yes—and it's easier than I expected.