Systems | Development | Analytics | API | Testing

March 2020

Community Roundup: March 6 - 31

Welcome back to another one of our Community Roundups! We hope that all of you are safe and sound, and that the recent situation hasn't got you completely down. If you’re back home and are looking for some inspiration for upgrading your Bitrise setup, check out these articles — and a couple of happy little tweets, just for good measure. Let's get started!

Fabric Crashlytics Log on Android and iOS

Ever since we started logging with Bugfender back in 2015, we’ve been working towards integration with Firebase, the app development platform created by Google. Firebase is famous for the breadth of its integration libraries and millions of people use the product around the world, drawn to its sleek UI and range of features. Our primary goal has been integration with Firebase Crashlytics Log, which underpins the entire platform.

Software and team structures: the fundamental relationship

Software developers and software architects have, for a very long time, stood on opposite sides of the “whose is better” competition. They have completely different beliefs, with each vowing that theirs is the correct one. Some swear by Java as the holy grail of backend; some worship Go as the right solution to all your backend problems. But, really, is there one right answer? Apart from the tools that you use, the architecture you will be using differs from company to company.

A Practical Guide to JavaScript Debugging

Being a UI developer, I’ve learned one thing: It doesn’t matter how carefully you write your code. Suppose you’ve double-checked that you defined and called all functions the right way or followed all the best practices. Even then you’ll see that a tiny variable can sneak behind and create an error. Now, suppose you find out that for some unknown reason a form validation or submit button isn’t working.

Why and How to Host your Rails 6 App with AWS ElasticBeanstalk and RDS

When you deploy a new Rails app, you typically face a double-bind. If you use an easy platform like Heroku, you could create problems for yourself as your application scales. If you use a more fully-featured platform, you risk wasting time on ops that could be spent on your product. What if you could have both: an easy deployment option that is easy to scale?

Tutorial: Log to Console in PHP

“All code and no logging makes John a black box error-prone system.” Logging is a key aspect of monitoring, troubleshooting and debugging your code. Not only does it make your project’s underlying execution more transparent and intelligible, but also more accessible in its approach. In a company or a community setting, intelligent logging practices can help everyone to be on the same page about the status and the progress of the project.

Deployment Bottlenecks and how to tame them

If you take a long hard look at the DevOps movement, you will find it actually divides neatly into two sub-movements. The bigger and often noisier of the two is about technology, advocating for the latest and the greatest tools and techniques, be they Cloud, CI/CD, Serverless, or Containers. The smaller sister, however, is much different, stemming from Management Theorem and focusing more on processes.

JavaScript Tracing: How to Find Slow Code

Finding slow JavaScript code can be a tricky problem to solve. Small code changes can have a big impact on the performance of your code. Fortunately, many different approaches can help you nail down the exact source of the problem. In this post, you’ll learn about three methods that’ll bring you the results you’re seeking. You can trust manual code inspection, but that has its disadvantages.

Facade Pattern in Rails for Performance and Maintainability

In today’s post, we will be looking into a software design pattern called Facade. When I first adopted it, it felt a little bit awkward, but the more I used it in my Rails apps, the more I started to appreciate its usefulness. More importantly, it allowed me to test my code more thoroughly, to clean out my controllers, to reduce the logic within my views and to make me think more clearly about an application’s code’s overall structure.

Why Every Web Developer Should Explore Machine Learning

If software's been eating the world for the past twenty years, it's safe to say machine learning has been eating it for the past five. But what exactly is machine learning? Why should a web developer care? This article by Julie Kent answers these questions. I don't have kids yet, but when I do, I want them to learn two things: Whether or not you believe that the singularity is near, there's no denying that the world runs on data.

.NET Developer Finds Latent Bugs with Prefix

Rostyslav Kosmirak is a .NET developer from Ivano-Frankivsk, Ukraine using Rider and Visual Studio IDE. Kosmirak was not looking for a Dynamic Code Profiler when he came across Prefix. Kosmirak explains that initially he was searching through Google for a log management system when he stumbled on Prefix. Upon downloading, Kosmirak discovered hidden performance problems in his code before they manifested to actual performance problems.

Programmatically Adding Laravel Middleware

When it comes to web development, middleware is often the key to ensuring everything connects up - even if some of the pieces don’t always match up. HTTP Middleware is a mechanism used to conveniently filter HTTP requests coming into your web application. When it comes to PHP, frameworks often help us get our applications to handle workloads vanilla PHP might have a harder time managing. Frameworks help to manage the underlying structure of an application while supporting existing PHP standards.

Building Compile-time Tools With Elixir's Compiler Tracing Features

Elixir 1.10 was recently released, and with that release came a little-known, but very interesting feature—compiler tracing. This feature means that as the Elixir compiler is compiling your code, it can emit messages whenever certain kinds of things are compiled. This ability to know what’s going on when Elixir is compiling our code might seem simple, but it actually opens up a lot of doors for opportunities to build customized compile-time tooling for Elixir applications.

The 15 Best Podcasts for Engineers

If you've been on the hunt for a new developer podcast, then you understand just how difficult and fruitless that pursuit can be. You can spend hours online sifting through coding podcasts, programming podcasts, and DevOps podcasts only to realize one simple thing: none of them focus on your preferred programming language! With thousands of different developer podcasts out there, the problem is magnified exponentially. Fortunately, we at Scout APM have nothing but expertise and time on our hands.

Apache Kafka Example: How Rollbar Removed Technical Debt - Part 1

March 10th, 2020 • By Jon de Andrés Frías In this two-part series of blog posts, we’ll explain how Kafka has helped us in removing parts of our architecture that we consider to be “legacy”. During the development of a project sometimes we need to take decisions on our architecture or software design that may not be the best decisions from a pure and perfectionist technical perspective.

How to Fix Crashing Apps on an iPhone or Android?

If you’ve got an app that keeps going down for no apparent reason, don’t worry, this quick and easy guide will give you the tools to get it up and running smoothly. To help you better, first select what type of user you are and what problem you have: If you’re not from the tech world yourselves, you probably think us programmers get everything right all the time.

My Empire State of Mind: 3 Takeaways from the O'Reilly Software Architecture Conference

Last week the Rookout team, myself among them, participated in and sponsored the O’Reilly Software Architecture Conference in New York. New York is a city I personally love - the energy, the food, and the views are always top notch- there’s really just no comparison to the city that never sleeps. On top of that, I had the opportunity to mingle with some of the brightest minds in software architecture from many of the most successful companies in the world.

Building a Rails App With Multiple Subdomains

In today’s post, we’ll learn how to build a Rails app that can support multiple subdomains. Let’s assume that we have a gaming website funkygames.co and we want to support multiple subdomains such as app.funkygames.co, api.funkygames.co, and dev.funkygames.co with a single Rails application. We want to ensure that proper authentication is performed for all subdomains and that there are no duplicate routes.

Announcing our new $11M Series B funding

Nearly eight years ago, Cory and I started on a journey to help developers build software quickly and painlessly. As software developers ourselves, we had felt the pain of being afraid to ship and spending late nights tracking down bugs. In 2013, we launched Rollbar into the world so that developers could build software faster, shipping often without fear. These days, lots of people talk about continuous delivery, and nearly all of them focus on automating releases.

Five Challenges for Running Reliable PHP Background Processes

PHP isn't typically thought of as a solution when creating worker or background processes, jobs that typically can last for an extended period. These can be tasks such as image processing, file repair, and mass email batch jobs. Typically, PHP is linked with HTTP requests, requests which are short in duration and stateless in nature. However, just because of this enduring association, it doesn't mean that PHP can't be used for background processes. On the contrary.

How to Check Website Logs

Have you ever looked at your website logs and realized they don’t make sense to you? Maybe your log levels have been abused, and now every log categorizes as “Error.” Or your logs fail to give clear information on what went wrong, or they reveal sensitive information that hackers may harvest. Fixing these problems is possible! Let’s explore how you can write meaningful log messages and use log levels correctly.

C# Exception Handling Best Practices

Welcome to Stackify’s guide to C# exception handling. Why is this topic so important? In modern languages like C#, “problems” are typically modeled using exceptions. Jeff Atwood (of StackOverflow fame) once called exceptions “the bread and butter of modern programming languages.” That should give you an idea of how important this construct is.

Elixir Package 1.12: Phoenix 1.5 Support & Better Channel Error Handling

Great news for all the Elixir alchemists, we’ve just released AppSignal for Elixir package version 1.12.0 which adds support for the upcoming 1.5 version of the Phoenix framework, and improves in-channel error handling. If you’re not an AppSignal user yet, make sure to check out the product tour and see how errors, performance, host metrics and triggers all come together in one tool. Phoenix 1.5 isn’t here yet, but AppSignal 1.12 is ready for it.

Why Pry is one of the most important tools a junior Rubyist can learn

As programmers we often have to mentally run code. To imagine how a program will behave given certain inputs. This is hard enough for experienced developers. But for juniors? It can seem impossible. In this article, Melissa Williams argues that pry is an invaluable tool for junior rubyists because it allows them to see exactly what is going on as their code is run.

A Complete Guide to Rails Caching

Application performance is always a concern when building in the modern, competitive web and mobile space. At Scout, it’s why we created application performance monitoring tools in the first place. That said, there are steps you can take to build a more performant application. If you are using Ruby on Rails, caching might be one of the best tools on your belt to build a better application.

Logit.io Announce New Dashboard Design

We're happy to announce that we've just launched our newly designed dashboard for our logs & metrics platform, allowing DevOps & security professionals to see their vital metrics quicker than ever before. Our team has been keen to respond to the needs of our users through undertaking dedicated research which informed the creation of this latest update to the platform's design. This new design provides improved real-time feedback to users managing & creating new ELK stacks.