Systems | Development | Analytics | API | Testing

Development

How to Enable PHP Error Reporting

Errors are undesirable for users and you should do everything in your control to keep users away from them. However, they are of utmost importance for developers. They allow developers to understand the inaccuracies and vulnerabilities in their code by alerting them when their code breaks. They also provide relevant information about what went wrong, where, and what can be done to make amends.

A Definitive Guide to Understandability

As we all know, with great power comes great responsibility, and it’s not only Spider-Man who feels the pressure from that. However, in the case of developers, we’d like to change that saying (sorry, Uncle Ben!) to say that with great power comes great limitations. Why, you ask? Well, it really comes down to the power that software developers have.

Best Practices for Background Jobs in Elixir

Erlang & Elixir are ready for asynchronous work right off the bat. Generally speaking, background job systems aren’t needed as much as in other ecosystems but they still have their place for particular use cases. This post goes through a few best practices I often try to think of in advance when writing background jobs, so that I don’t hit some of the pain points that have hurt me multiple times in the past.

Troubleshooting Encoding Errors in Ruby

Text encoding is fundamental to programming. Web sites, user data, and even the code we write are all text. When encoding breaks, it can feel like the floor is falling out from under you. You're cast into a dimension of bitmasks and codepoints. Logs and backtraces are useless. You consider trading your text editor for a hex editor. But there's hope! In this article, Jose Manuél will show us how encoding errors happen, how they're expressed in Ruby, and how to troubleshoot them.

Behind the Scenes of Node.js Distributions

If you are installing Node.js in Linux to use it in production, there is a big chance that you are using NodeSource Node.js Binary Distributions. In this talk you can find the process in which NodeSource Node.js Binary Distributions is updated, how new versions are supported, the human and infrastructure process, and some limitations of maintaining the channel. Also and most importantly, how the community can get involved with this project.

Deep Dive: Seamless, Reliable E2E Testing with Bitrise & Perfecto

With Perfecto providing the test cloud and Bitrise executing CI, teams are able to run their Espresso, XCUItest, Selenium, and Appium tests on Perfecto devices. This helps developers achieve immediate feedback, as test results provide insights into the health of their applications.

Better Python Decorators with Wrapt

Our instrumentation uses built-in extension mechanisms where possible, such as Django’s database instrumentation. But often libraries have no such mechanisms, so we resort to wrapping third party libraries’ functions with our own decorators. For example, we instrument jinja2 ’s Template.render() function with a decorator to measure template rendering time. We value the correctness of our instrumentation a lot so that we do not affect our users’ applications.

Bug Forensics - How to debug an app that communicates with the server

When something crashes in an app, fixing the bug is usually quite straightforward. But apps can also be blighted by bugs that don’t result in crashes, and this is where things start to get interesting. To find and fix these bugs, you will require as much information as possible and probably a combination of tools. Let me explain a process we know as ‘bug forensics’, based on a real bug that has impacted one of Bugfender’s customers.