• Codecov always shows 100% incorrectly

    Some test coverage reporters cannot see statements on the same line as a condition and will generate a wrong report, therefore use curly brackets with conditions. Besides, this approach results in ne...

  • The dangers of trusting HTTP headers

    HTTP headers can be set by users and they can be very dangerous if you are using their values anywhere in the application logic, or are writing or storing (and eventually writing) their values anywh...

  • Why the names btoa and atob for Base64 encoder decoder functions?

    Why are they named btoa() and atob()? If you have ever needed to encode text to Base64 or decode a Base64 encoded string to plain text, you should be familiar with the methods btoa() and atob(). Thei...

  • Using GraphQL with Express.js

    How to use GraphQL with Express.js This article is for developers who are familar with Express, but has little to no experience with GraphQL. I will give a high-level introduction to GraphQL and some...

  • CSS: Custom list bullets

    Although it is not possible to customize the default list bullet style using CSS, there are several ways to implement custom bullets for list items, which can then be completely customized according ...

  • Express.js: Handling file uploads

    How to handle file uploads in Express I briefly touched the subject of file uploads in Express in "Express.js: Handling / processing forms". Let's revisit that usecase and others in a more detailed m...