Since the inception of RisingStack, our engineers have published more than 220 articles to show off our coding/architectural skills and convince potential clients that we have the expertise to build & scale software effectively, and to prove that we're great educators!
As a result, our Blog brought together a huge community of enthusiastic engineers in the past 5 years - so far we've reached more than 5.9 million devs & gained around 50K subscribers.
Sometimes it's great to look back & be nostalgic about our successes, so we dived deep into our data and listed our most-read and most-shared articles!
This collection is also a great starting point for new readers of the blog.
Top 11 Most-Read Posts on the RisingStack Blog:
Asynchronous language constructs have been around in other languages for a while, like async/await in C#, coroutines in Kotlin and goroutines in Go. With the release of Node.js 8, the long-awaited async functions have landed in Node.js as well.
From this article, you can learn how you can simplify your callback or Promise based Node.js application with async functions (async/await).
- liked the good old concepts of
for/while loops, or
- believe that a
try-catchblock is the way errors are meant to be handled,
you will have a great time rewriting your services using
As we show in this article,
async/await can make several patterns a lot more easier to code and read, so it is definitely more suitable in several cases than
Promise.then() chains. However, if you are caught up in the functional programming craze of the past years, you might wanna pass on this language feature.
From this article, you can learn how to fire up a simple Node.js HTTP server and start serving requests from scratch! We discuss Express, Middlewares, Error Handling & Debugging as well!
This blogpost is the 4th chapter of our Node Hero tutorial series. Check out this post to go from the beginning: https://blog.risingstack.com/node-hero-tutorial-getting-started-with-node-js/
With the v7.4 release, npm 4 became the bundled, default package manager for Node.js. In the meantime, Facebook released their own package manager solution, called Yarn. In this article we dive into what these package managers offer, what's the difference between them, and how they evolved.
This article helps you to get started with React.js and gives insights on thinking the 'React way.' We wrote it at the beginning of the React hype, which means that it's a little bit outdated. We hate to disappoint, so we created a few follow-up React.js tutorials including our latest:
This article is the first part of our fan-favorite "Getting Started with Node.js" series which helps beginners to grasp the main concepts behind Node.js and teaches how to write software effectively!
We even created stickers for this series! :)
This article is a collection of React.js best practices, with special attention to data handling. Although it was written in 2016 - it still holds value & it's being read constantly.
We discuss flux, redux, immutable states, observables, routing, components, testing & so on..
This article teaches readers how to structure a Node.js project properly to avoid confusion when applications start to grow. We talk about the 5 fundamental rules of structuring a project, which are:
- Organize your Files Around Features, Not Roles
- Don't Put Logic in index.js Files
- Place Your Test Files Next to The Implementation
- Use a config Directory
- Put Your Long npm Scripts in a scripts Directory
This Passport.js tutorial walks you through the steps of setting up a local Node.js authentication strategy using Redis.
Get some help with logging in Node.js modules, applications and distributed systems. To do so, check out the tools, methods, rules and best practices we use at RisingStack for developing enterprise Node projects.
- Always log to stdout. It is not the applications responsibility to route logs.
- Never, ever log credentials, passwords or any sensitive information.
In this article, we wrote about best practices for writing Node.js REST APIs, including topics like naming your routes, authentication, black-box testing & using proper cache headers for these resources.
- 1 - Use HTTP Methods & API Routes
- 2 - Use HTTP Status Codes Correctly
- 3 - Use HTTP headers to Send Metadata
- 4 - Pick the right framework for your Node.js REST API
- 5 - Black-Box Test your Node.js REST APIs
- 6 - Do JWT-Based, Stateless Authentication
- 7 - Use Conditional Requests
- 8 - Embrace Rate Limiting
- 9 - Create a Proper API Documentation
- 10 - Don't Miss The Future of APIs
Top 10 Most-Shared Posts of RisingStack
This article collects the most important Node.js best practices that you should implement to become a better developer. Although this article was written for 2017, you can still find some evergreen pieces of advice in there.
To make sure that you keep up with the trends, we published a 2018 version of this article too, which you can find here:
There is no reasonable excuse for doing anything less than your best, especially when it comes to coding.
“Even bad code can function. But if the code isn’t clean, it can bring a development organization to its knees.” — Robert C. Martin (Uncle Bob)
Security - the elephant in the room. Everyone agrees that it is very important, but few takes it seriously.
This hands-on checklist helps you to have all the security checks before your application is enabled to thousands of users/customers. Make sure not to miss any of them!
In this article, we give a solution for the most common pain-points of structuring advanced Node applications and help you with structuring a complex project.
What to aim for in project structuring?
- Writing an easily scalable and maintainable application
- The config is well separated from the business logic.
- Our application can consist of multiple process types.
It's important to get these aspects right as the way you bootstrap your apps will determine your whole project.
Node v10 was recently announced, and we were super excited about its new features and the possible changes it would bring in the way we develop Node.js apps. To introduce it in depths to our reader, Tamas wrote a neat post about it. He included:
- Stable HTTP 2
- ESM Modules
- Error Codes
- Fs Promises
- V8 6.6
We conducted a survey in 2016 about how developers use Node.js and to find out various aspects of developing Node.js and choices for async control flow, debugging, continuous integration or finding packages. We concluded that one of the most significant pain-point of Node.js developers was Debugging, among others:
- Debugging / Profiling / Performance Monitoring
- Callbacks and Callback hell
- Understanding Async programming
- Dependency management
- Lack of conventions/best practices
- Bad documentation
- Finding the right packages
To keep track with the changes of the community, we surveyed Node developers in 2018 too. You can see the most up-to-date results in this post:
In this post, we collected 10 interview questions and answers that would help you get an overview of a person's experience in Node.js. This article is not only useful from the interviewers' viewpoint but from the interviewee as well.
It's important to note though, that these questions do not give you the big picture of someone's mindset and thinking, so we encourage you to do pair programming with the developers you are going to hire.
We have also written a similar post recently about getting ready for a React interview, which you can find here:
What are design patterns?
A design pattern is a general, reusable solution to a commonly occurring problem.
When we talk about design patterns, we might think of singletons, observers, or factories. Besides these, this article also deals with other, super useful pattern as well, such as:
- dependency injection
This article focuses on understanding the principles of operating systems, since they handle our applications' I/O. Let's dive into concurrency and paralellism, and understand the main differences between them.
We'll go the following takeaways:
- Intro to Concurrency and Parallelism
- Processes and threads
- CPU vs. I/O
- I/O flavors: Blocking vs. non-blocking, sync vs. async
- Busy-waiting, polling and the event loop
Then, see a hands-on example that illustrates the differences between working with synchronous, blocking and asynchronous, non-blocking network I/O.
Our favourite framework has a rich history since it's emerged in 2009.In this post we go through the history of Node.js; we see how it got started and how did it become the framework that we know now.
RisingStack's Engineer Favorites:
We also asked our engineers about which articles they enjoyed writing the most:
Tamas Kadlecsik: Consumer-Driven Contract Testing
In this article, Tamas walks you through the steps of performing consumer-driven contract testing in a microservices architecture with Pact.
After you got the fundamental consumer-driven contract testing right, you should check out the 2nd, more advanced part of it:
Peter Czibik: Getting Node.js Testing and TDD Right
Making sure that the changes we make in a large codebase actually work is of utmost importance.
It can be tedious to have proper test coverage when you have to focus on pushing out all the new features, but think about your future self, would you like to work on code that's not tested properly? If not, read this guide on getting testing and test-driven development right.
"Remember, you don't write tests for yourself! You write them for those who make changes later." - RisingStack
Tamas Hodi: Node.js Async Best Practices
In this post, Tamas covers the tools and techniques you have at your disposal when handling Node.js asynchronous operations: async.js, promises, generators and async functions.
- Asynchronous programming in Node.js
- The Problem with Node.js Async
- The Classical Approach of Callbacks
- How to avoid a Callback Hell with Control Flow Managers
Bertalan Miklos: Introducing React Easy State
React Easy State is a state management library for React. This article introduces the fruition of Bertalan's two years long journey with ES6 Proxies and meta programming.
Bertalan guides you through creating a stopwatch with his newly announced library. It's very cool:
Robert Czinege: How I Survived RisingStacks Bootcamp
This article captures the journey of how Robert became an engineer at RisingStack; how he utilized what he learned in our Node.js coding bootcamp and beat his imposter syndrome.
Robert's story can be an inspiration for anyone who is seeking a career shift in their life. If you'd like to learn more Node, check out our resources page.
Kristof Ivancza: How to Get Started With Kubernetes
When our clients ask us to create a distributed system, we usually recommend Kubernetes, because it's great, and in the same time a lot more simple than other competing orchestration engines.
You can get started with Kubernetes with this article where Kristof collected everything you need to know about our favorite orchestration engine.
Mate Huszarik: AngularJS to Angular - a brief history
Mate dived deep into the history Angular to see where it came from and what might happen with it in the future. Read more about the pillars of Angular to have a better understanding of what it has to offer.
"Indeed, Angular might have a longer learning period compared to other front-end libraries but in return it enhances the developer experience with built-in solutions that come by importing modules."
What should we write about Next?
Let us know if there's anything you're missing from our repertoire in the comment section below!