Search overlay panel for performing site-wide searches

Build Your Next Big Thing on Heroku. Sign Up Now!

Heroku Blog

Incidents are inevitable. Any platform, large or small will have them. While resiliency work will definitely be an important factor in reducing the number of incidents, hoping to remove all of them (and therefore reach 100% uptime) is not an achievable goal.

We should, however, learn as much as we can from incidents, so we can avoid repeating them.

In this post, we will look at one of those incidents, #2105, see how it happened (spoiler: I messed up), and what we’re doing to avoid it from happening again (spoiler: I’m not fired).

Your app is slow. It does not spark joy. This post will use memory allocation profiling tools to discover performance hotspots, even when they're coming from inside a library. We will use this technique with a real-world application to identify a piece of optimizable code in Active Record that ultimately leads to a patch with a substantial impact on page speed.

In addition to the talk, I've gone back and written a full technical recap …

Moving shipping containers is heavy work. Moving a traditional industry into the digital age is a different kind of heavy job. Software development agency GNAR took on the challenge and built an ops management platform for RMS Intermodal, one of the largest rail yard operators in the U.S. Their IoT solution gave RMS a data-driven view of their operations for the first time, resulting in a whole new definition of “efficiency” for the company.

There are always challenges when it comes to debugging applications. Node.js' asynchronous workflows add an extra layer of complexity to this arduous process. Although there have been some updates made to the V8 engine in order to easily access asynchronous stack traces, most of the time, we just get errors on the main thread of our applications, which makes debugging a little bit difficult. As well, when our Node.js applications crash, we usually need to rely on some complicated CLI tooling to analyze the core dumps.

YAML files dominate configuration in the cloud-native ecosystem. They’re used by Kubernetes, Helm, Tekton, and many other projects to define custom configurations and workflows. But YAML has its oddities, which is why the Cloud Native Buildpacks project chose TOML as its primary configuration format.

What is TOML?

TOML stands for Tom’s Obvious, Minimal Language. It’s a configuration file format created to be simple, readable, and predictable. Designed for humans first and machines second, TOML avoids syntactic ambiguity and is easy to understand even at a glance.

The format uses a key-value structure and supports sections, arrays, and nested tables. Its goal is to be as clear and minimal as possible while still expressive enough for most configuration tasks. Unlike JSON, TOML allows comments. Unlike YAML, it doesn’t rely on indentation for structure, which reduces the likelihood of formatting errors.

TOML has gained adoption in modern developer tools. The Rust package manager Cargo and the Python dependency tool Poetry both use TOML. In the cloud-native ecosystem, containers and Cloud Native Buildpacks also rely on TOML for configuration.

What is a TOML file?

A TOML file is a plain text file with a .toml extension that stores structured configuration data using TOML syntax. It defines settings using simple key-value pairs, and organizes related settings using headers and tables.You can learn more about TOML from the official documentation, but a simple buildpack TOML file looks like this:

In today's global economy, English proficiency unlocks opportunity. People all over the world are motivated to improve their English skills in order to make a better life for themselves and their families. Cambly is a language education platform that helps millions of learners advance their careers by connecting them with English-speaking tutors from a similar professional background.

For many language learners, speaking is often the hardest skill to improve in a classroom setting. Conversation time …

Subscribe to the full-text feed.