Systems | Development | Analytics | API | Testing

AppSignal

Avoiding False Positives in Node.js Tests

When running tests, it's a great feeling to see dozens of green check marks indicating that a test suite is passing. It's especially gratifying after tackling a tricky bug or slogging through a tough feature. But those passing tests may be giving you a false sense of security. Often, bugs lurk in passing tests, undermining trust in the test suite and your application. Such tests can cause more harm than good, giving you a hearty pat on the back while hiding broken functionality.

Streamlined Contract Testing in Node.js: A Simple and Achievable Approach

Do you want the benefits of contract testing with much less effort? Are you convinced of the benefits of contract testing but think it’s just too difficult to roll out across your organization? You might worry that implementing Pact in your organization requires challenging changes to culture and process. In this article, I’ll show you a drastically simplified approach to contract testing that a single developer can bring online.

How to Track Errors in Oban for Elixir Using AppSignal

When developing an Elixir app, you'll often need to handle tasks in a way that does not interrupt the normal user request-response cycle. Tasks like sending emails are great examples of jobs that should be delegated to a capable background job processing service. In the Elixir ecosystem, Oban is one such background job processing library. In this article, we'll learn what Oban is, how it works, and how to instrument it using AppSignal.

The Basics of Rack for Ruby

Rack is the foundation for every popular Ruby web framework in existence. It standardizes an interface between a Ruby application and a web server. This mechanism allows us to pair any Rack-compliant web server (such as Puma, Unicorn, or Falcon) with any Rack-compliant web framework (like Rails, Sinatra, Roda, or Hanami). Separating the concerns like this is immensely powerful and provides a lot of flexibility. It does, however, also come with limitations.

Managing Distributed State with GenServers in Phoenix and Elixir

Phoenix and Elixir are designed at their core to build real-time, fault-tolerant applications. With its elegant syntax and the robustness of the Erlang VM, Elixir is an ideal candidate for tackling the challenges of distributed state management. This two-part series will guide Phoenix/Elixir developers through the intricacies of working with Phoenix in a distributed setup.

How to Use Lambda Functions in Python

Lambda functions in Python are a powerful way to create small, anonymous functions on the fly. These functions are typically used for short, simple operations where the overhead of a full function definition would be unnecessary. While traditional functions are defined using the def keyword, Lambda functions are defined using the lambda keyword and are directly integrated into lines of code. In particular, they are often used as arguments for built-in functions.

Best Testing Practices in Node.js

Testing is a critical aspect of software development, as it ensures your application works as intended and meets quality standards. In Node.js, testing is essential for the early detection of bugs in public endpoints. However, there are many challenges associated with testing in Node. External dependencies, asynchronous operations, and several possible input scenarios make writing tests a daunting task.

Find and Fix N+1 Queries Using AppSignal for a Phoenix App in Elixir

N+1 queries are a frequent issue in complex applications built with Elixir and Phoenix. These queries can silently degrade application performance, often going unnoticed until they've compounded into a significant problem. They can substantially increase web page load times, as each additional query adds overhead to a database, consuming more time and resources. That's why it's crucial to detect and resolve N+1 queries to optimize production systems.

What's New in Ruby on Rails 8

The first Rails 8 beta has officially been released, bringing an exciting set of features, bug fixes, and improvements. This version builds on the foundation of Rails 7.2, while introducing new features and optimizations to make Rails development even more productive and enjoyable. Key highlights include an integration with Kamal 2 for hassle-free deployments, the introduction of Propshaft as the new default asset pipeline, and extensive ActiveRecord enhancements.