Amsterdam, Netherlands
May 18, 2022   |  By Darren Broemmer
Ask any software engineer to review key portions of production code, and inevitably, they will point out three things that need to be refactored. So why does so much bad, brittle, or misunderstood code remain running in production? The answer is simple: engineers are afraid to touch it. Refactoring tasks get identified and added to the backlog, but rarely make it into the current sprint. There are numerous reasons for this.
May 11, 2022   |  By Robert Beekman
In our last development cycle, we spent time improving our table performance in AppSignal. As customers stay around for longer, data starts piling up. A view with just 10 items in the beginning gathers hundreds of items, and keeps growing. Besides filtering data in the front-end to reduce the returned data, we wanted to ensure our data could keep growing without timeouts in our GraphQL API or slow-loading pages in our app.
May 10, 2022   |  By Sapan Diwakar
In this post, we will explore how event-driven architecture can make your app more responsive for users and decouple your modules for a better developer experience. We will also look at several methods of implementing event-driven architecture with Elixir. Elixir is particularly good for this because of the advanced and concise message-passing APIs that it offers and BEAM's outstanding support for concurrency. But first: what is event-driven architecture, exactly?
May 4, 2022   |  By Hans-Jörg Schnedlitz
Rails' batteries-included approach is one of its greatest assets. No other framework makes it so effortless to get your application off the ground quickly, at least partially due to Rails' generators. If you've used Rails for any amount of time, you have come across generators. Need to create a new application? Run rails new. Need to scaffold a bunch of new models and views? Run rails generate scaffold. There are dozens more available to help you get started rapidly or streamline your workflow.
Apr 26, 2022   |  By Pulkit Goyal
Elixir is all about performance. Say you have an app up and running with Elixir, but some parts aren't working as fast as you would like them to. That is where profiling comes in. Profiling tools usually walk you through the frequency and duration of function calls and where they spend their time. Erlang has impressive profile tooling available at its disposal. In this post, we will look into three profiling tools in Elixir: cprof, eprof, and fprof.
Apr 26, 2022   |  By Nate Anderson
The Node.js team announced the release of version 18 on April 19. Node.js 18 has some significant new features that Node developers should be aware of. In this article, we'll look at some of the major highlights from this release.
Apr 13, 2022   |  By Nikola Đuza
Some exciting new improvements have been launched with React 18. When React 18 was announced a year ago, the team promised a gradual adoption strategy. Now, a year later, this is exactly what they've done and you can upgrade your app to the newest version. React 18 comes with a few breaking changes, depending on how you use it.
Apr 6, 2022   |  By Camilo Reyes
Object-oriented programming (OOP) is hard to achieve in a dynamic prototypical language like JavaScript. You have to manually stick to OOP principles because of language features like duck typing. This requires discipline, as nothing in the language enforces the principles. If a diverse team of developers with different backgrounds is involved, a codebase filled with good intentions can quickly become one chaotic mess.
Mar 30, 2022   |  By Paweł Dąbrowski
Data integrity problems are among the most common database issues Rails developers face. Besides allowing for proper validation, correctly designed transaction blocks ensure that your data isn't partially created or updated. However, transactions can also harm your application — or even take down your whole database — when not properly designed. This article offers a set of good practices for working with transactions.
Mar 29, 2022   |  By Sophie DeBenedetto
Thanks to HEEx and function components, LiveView provides developers with a sleek, ergonomic syntax for building and maintaining sophisticated interactive UIs. LiveView's form/1 function component is a great example of this, making it easier than ever before to render complex forms within LiveView. However, the form/1 function component can feel a little mysterious to anyone unfamiliar with LiveView's function components.

Made for teams that want to build high quality Ruby and Elixir applications, AppSignal offers amazing insights into errors and performance issues, plus host monitoring and an easy to use custom metrics platform.

AppSignal supports the Elixir language with an Elixir package. The package supports pure Elixir applications and frameworks including Phoenix, Plug & Erlang.

AppSignal supports the Ruby language with a Ruby gem. The gem supports many frameworks and gems including Capistrano, DataMapper, Delayed Job, Grape, MongoDB, Padrino, Rack, Rake, Resque, Ruby on Rails, Sequel, Shoryuken, Sidekiq, Sinatra & Webmachine.

AppSignal now supports Node.js! The package supports pure JavaScript applications and TypeScript applications, and can auto-instrument various frameworks and packages with optional plugins.

AppSignal also has amazing support for catching errors from Front-end JavaScript applications and sending them to AppSignal, including the React, Vue, Angular, Ember, Preact & Stimulus frameworks.

Packed with features:

  • Alerts in your tools: AppSignal integrates with Slack, Flowdock, HipChat, OpsGenie and more.
  • Control your notifications: AppSignal notifies you exactly when you want to. Get the first exceptions per deploy, all of them of never. Set thresholds for performance notifications.
  • Amazing support: We don't do "first line" and "second line" support: you get to speak with a developer, immediately.
  • Send to issue trackers: A single click creates an issue with all the necessary details in your issue tracker of choice.
  • Manage teams and users: Add users to teams and give them access to specific or all, existing and/or new applications you monitor.
  • Focus on design: Developer tools do not need to be complicated and ugly. Our interface is kept clean and easy to use.

Catch errors, track performance, monitor hosts, detect anomalies — all in one tool.