Systems | Development | Analytics | API | Testing

AppSignal

Optimistic Locking in Rails REST APIs

Imagine the following hypothetical scenario: in a rental property management system, Employee A starts editing contact info for Rental X, adding some extra phone numbers. Around the same time, Employee B notices a typo in the contact info for exactly that Rental X and performs an update. A couple of minutes later, Employee A updates Rental X’s contact info with the new phone numbers, and … the update fixing the typo is now gone! That’s definitely not great!

How to Dockerize an Existing Node.js Application

Docker is a software platform that enables packaging an application into containers. These containers represent isolated environments that provide everything necessary to run the application. Dockerizing an application refers to packaging it in a Docker image to run in one or more containers. Dockerizing an application involves specifying everything needed to run the application in a Dockerfile and then using the file to build a specialized Docker image that can be shared to multiple machines.

How to Do Live Uploads in Phoenix LiveView

The LiveView framework supports all of the most common features that Single-Page Apps must offer their users, including multipart uploads. In fact, LiveView can give us highly interactive file uploads, right out of the box. In this post, we’ll add a file upload feature to an existing Phoenix LiveView application. Along the way, you’ll learn how to use LiveView to display upload progress and feedback while editing and saving uploaded files.

Under the Hood of Macros in Elixir

Welcome back to part two of this series on metaprogramming in Elixir. In part one, we introduced metaprogramming and gave a brief overview of macros. In this part, we will explore the inner workings and behaviors of macros in more depth. As discussed in the previous post, macros are compile-time constructs in Elixir. So, before diving into how macros work, it is important to understand where macros lie within Elixir’s compilation process.

Real-Time Form Validation with Phoenix LiveView

LiveView is a compelling choice for building modern web apps. Built on top of Elixir’s OTP tooling and leveraging WebSockets, it offers super-fast real-time, interactive features alongside impressive developer productivity. LiveView keeps the developer’s mind firmly rooted on the server-side, even when testing and debugging. This can empower you to deliver interactive features in single-page apps faster than ever before.

Improve Your Life with Long Error Messages

It is incredibly helpful to quickly detect when a customer encounters an error and where the error originated from in your source code. Thankfully, this is where many interpreted languages shine. They always include a complete backtrace — the path where the call was made, which caused the error to be raised (or thrown). In AppSignal, any error alert will bring you to an incident detail page that shows you that backtrace.

How to Reduce Memory Bloat in Ruby

The issue of memory bloat in Ruby applications is a topic of frequent discussion. In this post, we will look at how Ruby memory management can go wrong, and what you can do to prevent your Ruby application from blowing up. First, we need to understand what bloat means in the context of an application’s memory. Let’s dive in!

An Introduction to Metaprogramming in Elixir

In this world, there are many mysteries — but few are as elusive as metaprogramming in Elixir. In this four-part series, we’ll start by looking at core concepts and then explore how metaprogramming operates in Elixir specifically. Let’s develop an understanding of metaprogramming and uncover some Elixir metaprogramming secrets!