Systems | Development | Analytics | API | Testing

Latest Posts

End-to-End Testing With TestCafe for Node.js

It is essential that you test sites and web applications to ensure their reliability, functionality, and user experience. Thanks to its rich API and impressive list of features, TestCafe has emerged as one of the most popular choices for automated end-to-end testing in Node.js. In this guide, you'll learn what TestCafe is, understand how it works, explore its features, and see it in action with a complete example. Time to become a TestCafe testing expert!

An Introduction to Flask-SQLAlchemy in Python

Efficient management of database interactions is one of the most important tasks when building Python web applications. SQLAlchemy — a comprehensive SQL toolkit and Object-Relational Mapping (ORM) library — is widely used in the Python ecosystem for this purpose. However, integrating SQLAlchemy with Flask can be a complex process. So developers created Flask-SQLAlchemy to provide a seamless way to use SQLAlchemy in Flask applications, making database management a straightforward process.

Managing Asynchronous Operations in Node.js with AbortController

In Node, managing asynchronous operations effectively (especially those involving I/O, like network requests or file system access) is crucial to prevent resource depletion. Managing async operations well also helps maintain optimal application performance when the results of operations are no longer required. The AbortController API addresses this need by providing a standardized mechanism to terminate operations gracefully.

Building a Distributed Rate Limiter in Elixir with HashRing

Communication between processes in the Erlang VM happens through message passing. In fact, all communication across processes occurs through the same mechanism. All you need is an address and you can send a message to it, with the lower level building blocks being send and receive. This is true even if that address is on another node in a cluster of Elixir nodes that are aware of each other. In fact, it works in exactly the same way.

Fuzz Testing REST APIs in Node.js

It’s not enough to just test our code's happy path (in other words, the error-free path we hope our users will take). To be really confident our code can’t be abused, either accidentally or on purpose, we must actively attack it to try and find ways of breaking it. If we don’t do this, someone else will, and they probably won’t be as friendly.

Tracking Errors in Tesla with AppSignal for Elixir

While Elixir provides built-in libraries (like HTTPoison) for making HTTP requests, the Tesla library has gained popularity due to its simplicity, ease of use, and extensibility. Tesla offers a clean and composable way to define requests, handle responses, and customize client behavior. Even so, whenever you're working with external APIs, errors are inevitable. Network issues, server downtime, rate limiting, and unexpected responses can all lead to errors in your application.

How to Use Regular Expressions in Python

Regular expressions, commonly known as regex, are a tool for text processing and pattern matching. In Python, the re module offers a robust implementation of regex, allowing developers to handle complex text manipulation efficiently. In this article, we'll get to grips with regular expressions and provide practical code examples — from the basic to more advanced — so you can understand how to use regex in Python.

A Deep Dive Into CommonJS and ES Modules in Node.js

For several years now, the Node.js ecosystem has been steadily shifting towards ES modules (ESM) as the preferred method for sharing and utilizing JavaScript code. While CommonJS has served the community well, ESM are rapidly gaining traction as they offer a standardized approach for creating JavaScript modules across all supported runtimes.

Distributed Phoenix: Deployment and Scaling

In part one of this series, we managed distributed state using GenServers. This provided a foundation for understanding some core concepts in distributed Phoenix applications. Now, we turn our focus to deployment and scaling strategies. As your application evolves to meet growing demands, knowing how to scale horizontally, maintain high availability, and monitor distributed components becomes crucial.