Systems | Development | Analytics | API | Testing

April 2020

JavaScript Error Tracking with AppSignal v1.3.0 is Here

We’re happy to announce that the latest npm package for error tracking of your front-end with AppSignal has just been released. For those of you who aren’t really familiar with our error tracking service, we suggest you to take a deeper look into our docs. This was one of the bigger releases, and it includes many improvements and bug fixes. Here’s what we’ve done.

Reassessing My "Works on My Machine" Certificate

I recently remembered that about 13 years ago I was fully certified with the “Works on My Machine” certificate program. Although I went through the entire evaluation process as was required by Joseph Cooney in this blog of his, to be honest, I didn’t quite like how his certificate looked. So, I decided to go the extra mile - well, really, the extra few steps- in order to get the revised certificate issued by Jeff Atwood’s version.

Need to Node - Volume 66

In this volume of Need to Node, you can find the latest news on Node.js’s version 14 Release, Diagnostics in Node.js and The Cost of JavaScript Frameworks Need to Node is a weekly bulletin designed to keep you up-to-date with the latest news on the Node.js project, events and articles. You are always welcome to collaborate and participate. Please let us know if we missed a piece of content you think should be included!

Why Rubyists Should Consider Learning Go

These days fewer and fewer web developers get to specialize in a single language like Ruby. We use different tools for different jobs. In this article, Ayooluwa Isaiah argues that Go is the perfect complement to Ruby. The developer who knows both is in a great position to handle almost any back-end challenge.

Elixir Package 1.13: Phoenix LiveView Helpers and Updated Typespecs

With a special thanks to Aleksandar and Unai, we’re happy to announce AppSignal for Elixir 1.13.0, which includes our all-new LiveView instrumentation helpers and updated typespecs. 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.

Configuring your Elixir Application at Runtime with Vapor

Configuration has long been a hot topic in the Elixir community, and luckily, in the recent months, there has been a great deal of thoughtful work put into making this problem an easier one to solve. Today, we’re going to show you how to migrate from an Elixir application that has been configured with the widely used config/*.exs files at compile-time, to an application that instead uses environment variables for configuration and is configured at runtime.

Android memory leak

OutOfMemoryException is a common and frustrating bug, and one of the prime causes of unexpected app shutdown. “Why is this happening now, if the app was working perfectly yesterday?” It’s a question which perplexes both rookie and advanced Android developers the world over. There are a variety of potential causes of OutOfMemory Exceptions, but one of the most common is the memory leak — the allocation of memory in the app which is never released.

NodeSource GitHub Action - Code Risk, Compliance and Security Checks in GitHub PRs

NodeSource developed a GitHub Action that can be used as a lightweight CI workflow. Whenever a PR is submitted, NodeSource's 'Node Certified Modules' (NCM) uses the NCM pipeline to check and evaluate the project. The PR then fails or passes depending on the project’s risk profile. The integration delivers detailed code annotations to reflect where certain risk factors occurred in your project.

Ansible vs Jenkins

One of the challenges when you’re starting out with Development is getting the lay of the land. There are a lot of tools out there. And when one of the goals of Development is continually improving your processes, it’s important for you to understand how those tools might fit in your infrastructure. At the same time, you want to be efficient. You don’t want to add tools that overlap with one another. Or tools that cost more than other effective alternatives.

Remote Debugging: Everything You Need to Know

Nowadays, the term ‘remote debugging’ instills fear into even the bravest of dev hearts. Palms sweaty, knees weak, and arms ready (to code) they dive into what they’re sure will end in much pain and possibly a few broken pieces of code. This scenario and these feelings are common to devs everywhere, where many opt to take the trusted path of debugging on their *own* machines.

RBAC - Role Based Access Control

Last week, we announced NSolid 3.11.1, which introduces Role Based Access Control along with support for Node.js Erbium v12.16.2 and Dubnium v10.20.1. You can read here for more information. NodeSource’s Role Based Access Control feature empowers Org Admins to create, define, manage and assign roles that provide access privileges to distinct user-actions and/or views in the NSolid Console and accounts.nodesource.com.

Secrets and Env Vars

Learn about Bitrise Env Vars and Secrets and how you can configure them with a few clicks on the Workflow Editor or in a Step’s input. Continuous integration and delivery built for mobile: Automate iOS and Android builds, testing and deployment from your first install to the one millionth. Free for Open Source and small teams. Bitrise is a Continous Integration and Delivery (CI/CD) Platform as a Service (PaaS) with a main focus on mobile app development (iOS, Android). You can automate the testing and deployment of your apps with just a few clicks.

How to Use Lambdas in Ruby

Lambdas are a powerful feature of the Ruby language. They allow you to wrap logic and data into a portable package. In this post, we’ll cover how and when to use lambdas. You'll also learn about the difference between lambdas and Procs, and the performance profile of lambda functions. The code examples have been tested with 2.6 and 2.7 and should work with most modern Rubys.

Rails Performance: When is Caching the Right Choice?

We've all been there. You're clicking around your Rails application, and it just isn't as snappy as it used to be. You start searching for a quick-fix and find a lot of talk about caching. Take your existing app, add some caching, and voila, a performance boost with minimal code changes. However, it's not this simple. Like most quick fixes, caching can have long-term costs.

Learn Jenkins: Top Jenkins Tutorials and Resources

If there’s one thing SRE professionals and Development engineers lack, it’s time. After all, engineers need to oversee a variety of processes—like ensuring operational stability, conducting integration testing, and maintaining cybersecurity—to make sure their apps are working optimally. The list goes on and on. With heavy workloads and tight deadlines, there’s little time to waste on software issues stemming from internal collaboration issues.

An Engineer's Dilemma

Working with Rookout customers, I have noticed a significant pattern in how they describe engineering routines in the days before our software became a part of their daily workflow. It shows up in various engineering tasks such as developing new features, reproducing and fixing bugs, or even just documenting the existing system and how to best utilize it. It is also consistent across industries and tech stack.

Which is better to Create Web Apps: Laravel or CakePHP?

Laravel development services have been growing in popularity, with the Laravel framework often being compared to CakePHP. This article will show how to choose the best framework to meet specific business or solution requirements in the most effective way. Laravel and CakePHP are both very popular PHP frameworks. PHP is often used for creating dynamic websites or building high-end apps. PHP frameworks make it possible to create affordable websites with impressive UI/UX.

How to Start Using Counter Caches in Rails

It is widespread to have parent-child associations in Rails applications. On the parent side is a :has_many association, and on the child side is a :belongs_to association. Examples include an article with comments, or an author with books--the former is the parent, and the latter is the child. It is often useful to display a count of the children alongside information about the parent, without necessarily loading all the child records.

Announcing NSolid Version 3.11.1

We are excited to announce NSolid 3.11.1, which introduces Role Based Access Control along with support for Node.js Erbium v12.16.2 and Dubnium v10.20.1. If you are an Enterprise or Advanced Tier User, you can now use NodeSource’s central control nexus, accounts.nodesource.com to give and revoke Role Based Access Control permissions for the NSolid Console and accounts.nodesource.com.

Dissecting Rails Migrations

In today’s post, we’ll take a deep dive into Rails migrations. We’ll break down the migration into different pieces, and in the process, learn how to write an effective migration. We’ll learn how to write migrations for multiple databases, as well as how to handle failed migrations and techniques of performing rollbacks. To understand the whole post, you’ll need to have a basic understanding of databases and Rails.

Ride Down Into JavaScript Dependency Hell

Every JavaScript project starts ambitiously, trying not to use too many NPM packages along the way. Even with a lot of effort on our side, packages eventually start piling up. package.json gets more lines over time, and package-lock.json makes pull requests look scary with the number of additions or deletions when dependencies are added. “This is fine” — the team lead says, as other team members nod in agreement. What else are you supposed to do?

Updates from Bugfender Q1, 2020

Welcome to the spring Bugfender newsletter. Despite COVID-19 and thanks to being a remote company, we continue working on Bugfender to bring you new updates and features you can take advantage of. Bugfender is now hosted in twin datacenters. With a combination of High Availability and Master-Replica setups, we’re now able to process logs faster than ever and bring the service back up much faster in the unlikely event of datacenter-wide outages.

Happy Developers: Navigators of the data age

In the age of discovery, navigators changed the world. Their unique skills won them fame, riches, and glory, as well as the ears and support of kings and emperors. The rulers of old who knew the importance of investing in these skilled frontier men rewarded their nations with the longest and wealthiest golden ages they’d ever seen. Nowadays, in the age of data, developers are the new navigators.

What Is SDLC? Understand the Software Development Life Cycle

The Software Development Life Cycle (SDLC) refers to a methodology with clearly defined processes for creating high-quality software. in detail, the SDLC methodology focuses on the following phases of software development: This article will explain how SDLC works, dive deeper in each of the phases, and provide you with examples to get a better understanding of each phase.

The Citadel Architecture at AppSignal

DHH just coined the term “Citadel,” which finally gives us an excellent way to reference how we approach tech at AppSignal. We said, “Hey, this is us! Our thing has a name now”. In addition to the Majestic Monolith, someone should write up the pattern of The Citadel: A single Majestic Monolith captures the majority mass of the app, with a few auxiliary outpost apps for highly specialized and divergent needs.

Elixir GenServers: Overview and Tutorial

Elixir describes itself as "a dynamic, functional programming language designed for building scalable and maintainable applications." Although it's a relative newcomer, Elixir is built on top of the functional programming language Erlang. Elixir is capable of using any Erlang library, and is ideal for use cases such as web development and distributed and low-latency systems. The power, dynamism, and feature-rich toolset of Elixir have made it somewhat of a "cult classic" among programmers.

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

April 7th, 2020 • By Jon de Andrés Frías In the first part of our series of blog posts on how we remove technical debt using Apache Kafka at Rollbar, we covered some important topics such as: In the second part of the series, we’ll give an overview of how our Kafka consumer works, how we monitor it, and which deployment and release process we followed so we could replace an old system without any downtime.

What are the characteristics of a Mobile DevOps environment?

Shipping the right app with the right functionalities to the right customer, at the right time is how you boost your ranking in the app store. Some of the key steps in this process are: continuously releasing high-quality software, listening to feedback, and providing new features to users — before they even know that they want them. To achieve all of this, app developers need two main things: automation tools and a growth mindset.

What if it was a software bug/virus? Cyber vs. COVID-19: A thought experiment

The metaphor of software viruses to biological ones is deeply ingrained, easily seen in the fact that biological viruses are at least the namesake, if not the inspiration for computer viruses. Can we take this analogy and reapply it in reverse? Is it possible to learn more about how we can combat biological viruses, such as the raging COVID-19 epidemic, by leveraging concepts, mindsets, and ideas that evolved in the software engineering and cybersecurity worlds?

Changing the Approach to Debugging in Ruby with TracePoint

Ruby has always been known for the productivity it brings to its developers. Alongside features such as elegant syntax, rich meta-programming support, etc. that make you productive when writing code, it also has another secret weapon called TracePoint that can help you “debug” faster. In this post, I’ll use a simple example to show you 2 interesting facts I found out about debugging.

Logging in Go: Choosing a System and Using it

Go has built-in features to make it easier for programmers to implement logging. Third parties have also built additional tools to make logging easier. What's the difference between them? Which should you choose? In this article Ayooluwa Isaiah describes both of these and discusses when you'd prefer one over the other.

Go Fast: Getting Started with Sanic for Python

Tired of waiting for sluggish HTTP requests to complete before your backend code can proceed with other things? Sanic is an asynchronous web framework in Python, that is built to be fast. In a world where Flask and Django are the most preferred web development options in Python, Sanic is the new kid on the block. It’s a promising alternative that is not only faster but also delivers efficiency, simplicity, and scalability.

SOLID Design Principles Explained: The Single Responsibility Principle

SOLID is one of the most popular sets of design principles in object-oriented software development. All of them are broadly used and worth knowing. But in this first post of my series about the SOLID principles, I will focus on the first one: the Single Responsibility Principle.