Systems | Development | Analytics | API | Testing

Development

Bugfender Growth: from side-project to a sustainable $20k MRR business

It’s nearly five years since we started Bugfender as an offshoot of our software company Mobile Jazz. We’d gotten tired of chasing users who were experiencing problems with our apps and wanted to build an internal remote logging tool that would feed the information straight to us. It really was a garage project back then. We were running code sprints on our own time, so we wouldn’t have to dig into our savings. But we soon realized this could be much more than an internal experiment.

How Does Garbage Collection Work In PHP?

Thanks to PHP being an interpreted language and it that it has a garbage collector, PHP developers don't often have to think about memory management. Unlike developers in compiled languages, such as C/C++, we don't have to give that much thought to memory allocation and deallocation. However, it's helpful to have a broad understanding of how garbage collection works in PHP, along with how you can interact with it so that you can create high performing applications.

JavaScript Errors: An Exceptional History

Hello again! It’s a historic week here at AppSignal! This week we released the first version of our new and improved JavaScript error monitoring. Now you can have your front end code, Ruby or Elixir back end code, your hosts, performance, everything monitored in one interface. To celebrate the launch, in a two-part series of posts, we’ll be taking a look at the history of Errors in JavaScript, including how to handle them in your code today.

Launching JavaScript Error Tracking v1.0.

Good news, everyone! Today, we’re proud to announce the launch of our fully-fledged JavaScript error tracking for your front-end applications. From today, you’ll have even more complete insights into your Ruby and Elixir apps — your back-end errors, performance metrics, host metrics, custom metrics and your front-end errors can now all come together under a single interface.

Typespecs and Behaviours in Elixir

Today, we will dive into Typespecs and Behaviours. These are two Elixir features that we are ecstatic (pun intended) about. They are great examples of built-in features in Elixir that help get some of the advantages of statically typed code. Alright, let’s set the scene. Elixir is a dynamically typed language. This means that the type of each variable is not checked at compile-time, but rather at run-time. Like most things, this comes with advantages and disadvantages.

Conditional breakpoints: How to Debug iOS and Android apps from Zero (Part 2)

Conditional Breakpoints and their variants, Exception and Symbolic Breakpoints are powerful tools for advanced debugging, applicable to both iOS and Android. We’ll explore them in this article. In the first post of our How to Debug from Zero series we learnt the basics of breakpoints. At this point, you should know how to add a new breakpoint and how to use the “step over”, “step in” and “step out” commands.