Search overlay panel for performing site-wide searches
Salesforce (Heroku) Named a Leader. Learn More!

Engineering

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

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 its API in Ruby.

If the term "rate throttling" is new to you, read

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, in GraphQL, the client determines precisely the data it wants…

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 a generic guide explaining how to deploy a Python application on Heroku, check out Getting Started on Heroku with Python .

https://www.youtube.com/embed/1923eduj0Gg

Imagine…

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 efficient code; you need to understand how that code communicates with all the other systems involved and make it all work…

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 of software, scaling them to support millions of user’s requests across the world requires a fail-safe operational strategy. Salesforce offers a Live Agent…

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 the technical details. The web ceased being a standard: now your website could be a React site, or an Angular site, or a Vue…

In this post, we will cover changes coming to Chrome (and other browsers) that affect how third-party cookies are handled—specifically SameSite changes, how to test to see if your site is impacted and how to fix it.

⚓️ What is SameSite and why the big change? ⚓️ Prepare for Chrome 80 updates ⚓️ Step 1: Enabling SameSite Chrome flags and test to see if your site faces SameSite errors ⚓️ Step 2: Fixing cookie errors using appropriate attributes

What is SameSite and why the big change?

Back in May 2019, Chrome announced its…

As part of our Blackhat Europe talk “Reverse Engineering and Exploiting Builds in the Cloud” we publicly released a new tool called Terrier.

Announcing Terrier: An open-source tool for identifying and analysing container and image components.

In this blog post, I am going to show you how Terrier can help you identify and verify container and image components for a wide variety of use-cases, be it from a supply-chain perspective or forensics perspective. Terrier can be found on Github .

Containers and images

In this blog post, I am not going to go into too…

This blog post is adapted from a lightning talk by Ben Fritsch at Ruby on Ice 2019.

There can be a number of reasons why your application performs poorly, but perhaps none are as challenging as issues stemming from your database. If your database's response times tend to be high, it can cause a strain on your network and your users’ patience. The usual culprit for a slow database is an inefficient query being executed somewhere in your application logic. Usually, you can implement a fix in a number of common ways, by:

reducing the…

Update: On closer inspection, the lock type was not on the table, but on a tuple. For more information on this locking mechanism see the internal Postgresql tuple locking documentation . Postgres does not have lock promotion as suggested in the debugging section of this post.

I maintain an internal-facing service at Heroku that does metadata processing. It's not real-time, so there's plenty of slack for when things go wrong. Recently I discovered a Postgres performance issue that bogged down the system to the point where no jobs were being executed at all. After hours of…

Subscribe to the full-text RSS feed for Richard Schneeman.