Engineering
- Engineering
- Last Updated: May 30, 2024
- Scott Persinger
With the Salesforce hackathon fast approaching, I wanted to give a quick overview on building apps that use the force.com APIs (part of the Salesforce1 platform). The force APIs are rich and varied, so sometimes just getting started can seem a little daunting. What services are provided? The force.com APIs give your application access to the authentication, data storage, and business rule services provided by the Salesforce1 platform. Some of the things you can do with the APIs include: Authenticate users based on a Salesforce username and password Query any data stored in a Salesforce account. Data access rules for…
- Engineering
- Last Updated: October 02, 2014
- Scott Persinger
One of the challenges when starting a mobile app project is deciding what technology stack to use. Should the client app use iOS or Android native, mobile web, or a hybrid? Do the backend in Node, Ruby, or Java? Or skip the backend and use an Mobile Backend-as-a-Service? To help avoid needing to answer all those on your own we are open sourcing the Heroku Mobile Template. This app provides a full-stack starting point for creating new hybrid mobile apps and deploying them to Heroku. What’s in the box? The template application implements a simple real-time mobile Quiz app called…
- Engineering
- Last Updated: May 22, 2024
- Fred Hebert
The Heroku Routing team does a lot of work with Erlang, both in terms of development and maintenance, to make sure the platform scales smoothly as it continues to grow. Over time we've learned some hard-earned lessons about making systems that can scale with some amounts of reliability (or rather, we've definitely learned what doesn't work), and about what kind of operational work we may expect to have to do in anger. This kind of knowledge usually remains embedded within the teams that develop it, and tends to die when individuals leave or change roles. When new members join the…
- Engineering
- Last Updated: March 28, 2024
- David Gouldin
Celery is by far the most popular library in Python for distributing asynchronous work using a task queue. If you're building a Python web app, chances are you already use it to send email, perform API integrations, etc. Many people choose Redis as their message broker of choice because it's dead simple to set up: provision a Redis add-on, use its environment variable as your BROKER_URL, and you're done. But the simplicity of Redis comes at a cost. Redis does not currently support SSL, and it doesn't seem like that's going to change any time soon. Because Heroku add-ons communicate…
- Engineering
- Last Updated: September 05, 2014
- Brandur Leach
Many of Heroku's internal components make heavy use of logfmt to log information about what's going on in production. The format is hugely valuable in that it allows us to retroactively analyze what happened during any arbitrary request to our components, query our log traces in very flexible ways, and combined with Splunk, easily generate arbitrary metrics on historical data. It's unquestionably been an invaluable tool for fixing countless bugs, tracking down the root cause of many production incidents, and assessing usage in ways that would have been difficult otherwise. That said, when viewed in the wrong light, logfmt is…
- Engineering
- Last Updated: August 14, 2014
- Noah Zoschke
Retrospectives are a valuable tool for software engineering teams. Heroku consistently uses retrospectives to review operational incidents, root cause problems, and generate remediation tasks to improve our systems. Increasingly we use retrospectives for another purpose: to improve teamwork and interactions on projects. Here we intentionally avoid technical discussions and focus on the emotional and human aspects of work, with the goal of creating positive insights into how to improve as a team. When The most common times people conduct retrospectives are after some bad incident, or at the conclusion of a big project. These are worthwhile times, but there are…
- Engineering
- Last Updated: March 28, 2024
- Scott Persinger
Heroku Connect is a service offered by Heroku which performs 2-way data synchronization between Salesforce and a Heroku Postgres database. When we first built Heroku Connect, we decided to use polling to determine when data had changed on either side. Polling isn't pretty, but its simple and reliable, and those are "top line" features for Heroku Connect. But polling incurs two significant costs: high latency and wasted resources. The more you poll the more you waste API calls and database queries checking when there are no data changes. But if you lengthen your polling interval then you grow the latency…
- Engineering
- Last Updated: April 24, 2024
- Scott Persinger
Force.com and Heroku are both part of the Salesforce1 platform. There are lots of great ways to leverage force.com from your Heroku app. This article will give an overview and pointers to get you started. Heroku Connect The easiest way to link force.com and Heroku is to use our two-way data synchronization service Heroku Connect. This point-and-click service lets you synchronize data from force.com into the Postgres database attached to your Heroku app. You can read and write data directly in Postgres, and changes are automatically synchronized with force.com. Note that Heroku Connect moves data asynchronously. This means that when…
- Engineering
- Last Updated: May 15, 2014
- Wesley Beary
Today we’re open sourcing the toolchain Heroku uses to design, document, and consume our APIs. We hope this shows how Heroku thinks about APIs and gives you new tools to create your own APIs. This toolkit includes our HTTP API design guide, the prmd tool for managing JSON schemas and generating API docs, and client generators for Ruby and Go. Here’s some more information about these things, how we use them at Heroku, and an explanation of how you can try them yourself. HTTP API Design Guide The Heroku HTTP API Design Guide shows how we design and document APIs…
Subscribe to the full-text RSS feed for Scott Persinger.