Search overlay panel for performing site-wide searches

Boost Performance & Scale with Postgres Advanced. Join Pilot Now!

Engineering

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 …

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:

I work on Heroku’s Runtime Infrastructure team, which focuses on most of the underlying compute and containerization here at Heroku. Over the years, we’ve tuned our infrastructure in a number of ways to improve performance of customer dynos and harden security.

We recently received a support ticket from a customer inquiring about poor performance in two system calls (more commonly referred to as syscalls) their application was making frequently: clock_gettime(3) and gettimeofday(2).

In this …

When API requests are made one-after-the-other they’ll quickly hit rate limits and when that happens:

If you provide an API client that doesn’t include rate limiting, you don’t really have an API client. You’ve got an exception generator with a remote timer.

— Richard Schneeman Stay Inside (@schneems) June 12, 2019

That tweet spawned a discussion that generated a quest to add rate throttling logic to the platform-api gem that Heroku maintains for talking to …

Over the last few years, GraphQL has emerged as a very popular API specification that focuses on making data fetching easier for clients, whether the clients are a front-end or a third-party.

In a traditional REST-based API approach, the client makes a request, and the server dictates the response:

$ curl https://api.heroku.space/users/1 { "id": 1, "name": "Luke", "email": "luke@heroku.space", "addresses": [ { "street": "1234 Rodeo Drive", "city": "Los Angeles", "country": "USA" } ] }

But, …

This blog post is based on From Project to Productionized, a talk given at PyCon 2020 at the height of the COVID-19 pandemic. You can use this post today to learn how to deploy a Python application on Heroku. More specifically, we’ll show you how to deploy Django apps, including setting up your Django configuration, building continuous delivery pipelines, adding middleware, and everything else that goes into deploying Django on Heroku.

If you’d prefer …

This blog post is adapted from a discussion during an episode of our podcast, Code[ish].

Over the last twenty years, software development has advanced so rapidly that it's possible to create amazing user experiences, powerful machine learning algorithms, and memory efficient applications with incredible ease. But as the capabilities tech provides has changed, so too have the requirements of individual developers morphed to encompass a variety of skills. Not only should you be writing …

Text-based communication has a long history weaved into the evolution of the Internet, from IRC and XMPP to Slack and Discord. And where there have been humans, there have also been chatbots: scriptable programs that respond to a user’s commands, like messages in a chat room.

Chatbots don't require much in terms of computational power or disk storage, as they rely heavily on APIs to send actions and receive responses. But as with any kind …

In the early years of web development, there were three standard fundamentals upon which every website was built: HTML, CSS, and JavaScript. As time passed, web developers became more proficient in their construction of fancy UI/UX widgets for websites. With the need for newer ways of crafting a site coming in conflict with the relatively slow adoption of newer standards, more and more developers began to build their own libraries to abstract away some of …

Subscribe to the full-text RSS feed for Engineering.