Systems | Development | Analytics | API | Testing

AppSignal

Node.js Resiliency Concepts: Recovery and Self-Healing

In an ideal world where we reached 100% test coverage, our error handling was flawless, and all our failures were handled gracefully — in a world where all our systems reached perfection, we wouldn’t be having this discussion. Yet, here we are. Earth, 2020. By the time you read this sentence, somebody’s server failed in production. A moment of silence for the processes we lost.

Going from Consulting to SaaS

For many freelancers and small business owners, moving from consulting or freelance development work to operating a SaaS product is the Holy Grail. That makes sense: running a SaaS scales better and makes for a stable income. While there’s no guaranteed path to success, here’s what we learned taking AppSignal from a “20% time side-project” to a business serving thousands of developers around the globe. This article isn’t a blueprint.

Security Best Practices for Node.js

Because a lot of systems are connected to the web these days (or, at least, communicate/integrate with it at some level), companies are giving more and more attention to web security. Web security usually comes to public attention when certain events reach the news, for example, security leakages, hacker activities, and/or data-stealing over big companies, some of them really large (like Google, LinkedIn, etc.).

The State of Elixir HTTP Clients

In today’s post, we’ll look at two Elixir HTTP client libraries: Mint and Finch. Finch is built on top of Mint. We’ll see the benefits offered by this abstraction layer. We’ll also talk about some of the existing HTTP client libraries in the ecosystem and discuss some of the things that make Mint and Finch different. Finally, we’ll put together a quick project that makes use of Finch to put all of our learning into action. Let’s jump right in!

Node.js Resiliency Concepts: The Circuit Breaker

In 2009 Node.js opened up a door for front-end developers to dip their toes into the world of servers without having to leave the comfort of their language. It’s almost effortless to get started with Node. You can basically copy-paste an entire HTTP server into existence and then install an ODM and you’ve got your CRUD app ready to roll! However, if we’ve learned anything from the amazing Spider-Man, it’s that with great power, comes great responsibility.

A Deep Dive Into V8

A majority of front-end developers deal with this buzzword all the time: V8. A big part of its popularity is due to the fact that it led JavaScript to a new level of performance. Yes, V8 is very fast. But, how does it perform its magic and why is it so responsive? The official docs state that “V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++. It is used in Chrome and Node.js, among others”.

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.

Git is About Communication

An SCM such as Git is more than just a database for source code. It’s not only the thing you need to interact with to get code to production, but also a log of changes on a project. It’s not just the last couple of weeks of commits that are worth looking at. Any commit remains relevant weeks, months and years later. A commit serves multiple purposes. The first one is to explain a change during its review and the second is to explain a change to a future reader.