Increase your productivity with this Kanban-based template

desk top with laptop, cup of coffee, glasses, pens and open notebook
desk top with laptop, cup of coffee, glasses, pens and open notebook
Photo by Mounzer Awad on Unsplash

Since I started my digital business, I’ve been looking for ways to successfully organize my work. The internet is full of tools to help you get work done, but only a few of them are effective. I’ve been using Notion for months, and now I can say that my work schedule is more organized and tidy than ever before.

Notion offers multiple ways to organize your projects and tasks, but a Kanban-based template is what changed everything for me.

In this tutorial, I'll share with you how to build and use this template. …

A never-ending story about hope and failure

Image for post
Image for post
Photo by Sarah Kilian on Unsplash

Working as a freelancer, I spend my time on different projects. During the last one, like many others, I had to design and build a CRUD application. My usual approach is to use the multi-layered architecture described here. I’ve never had problems, but this time it was different. Due to performance issues, I had to push my back-end to the limit. Extremely complex queries, multiple levels of parallelization, bigger data, and more requests than usual. Although I don’t call myself a Spring Boot expert, I’m pretty confident about how to use it. …

The pros and cons of my favorite React UI libraries

Photo by Tirza van Dijk on Unsplash.

Early this year, I decided to take my JavaScript skills to the next level. Tired of jQuery, I started looking for something faster, more modern, and reliable.

I opted for React, which was voted the most loved and wanted JavaScript framework in Stack Overflow’s 2020 Developer Survey by the 65K developers who participated.

One of the first things I learned (and loved) about React is that thanks to its popularity, you don’t need to reinvent the wheel. There are countless UI suites ready for you. …

Why you should use it to promote your blog

A dog sitting and raising her paw, like a student wanting to ask a question.
A dog sitting and raising her paw, like a student wanting to ask a question.
Photo by Camylla Battani on Unsplash

Two months ago I published the first article on my personal blog. Not being a marketing expert, I started looking online for effective ways to get people to know about its existence. I tried traditional social media like Twitter, Instagram, and Facebook, and had terrible results. One day, a friend of mine texted me: you should really start using Quora! That was the beginning of my adventure.

First of All, What Is Quora?

How to set up Apache Virtual Hosts on a Linux server

Image for post
Image for post
Photo by Arnold Francisca on Unsplash

In this tutorial, we will see how to configure a subdomain, specifically a third-level domain, on a Debian-based Linux server with Apache2. We’re going to use Virtual Hosts, thanks to which you can have multiple subdomains and top-level domains on the same machine, i.e. on one IP.

The term Virtual Host refers to the practice of running more than one web site (such as and on a single machine. — Apache documentation

Apache breaks its functionality and components into individual units that can be configured independently. …

Using mxParser to separate the data calculation logic definition from where it is executed

Image for post
Image for post
Photo by Jeswin Thomas on Unsplash

Working with data scientists I learnt how many times a data processing system needs to be refined before optimal results can be achieved. That’s why you should not hardcoding math formulas, expressions, and constants in your code. This is especially true if the calculation data logic is not coded by data scientists.

While working on my last project, I was looking for a method to allow data scientists in my team to change the data calculation logic without forcing me to update code in my Kotlin back-end. The solution was to allow them to define complex math formulas, expressions, and constants in a database (or configuration file), from which I would read and then apply them. First of all, is this possible? …

How to handle amCharts Charts efficiently

Image for post
Image for post
Photo by Carlos Muza on Unsplash

amCharts is a JavaScript library for data visualization with built-in support for TypeScript and ES6 modules. It is also fully compatible with Angular, React, Vue.js. amCharts offers a wide selection of types of charts, as presented here.

I’ve been using amCharts for months and now I know its major strengths and downsides. When used for static charts, it’s simply amazing. What about dynamic charts?

Initializing an amCharts chart takes a lot of time and resources. Imagine doing this every time we need to change the data visualized, i.e. as a result of an event. This can easily become the bottleneck of a web application, especially if there are many charts (depending on this event) on the same page. …

Mastering React component composition

Image for post
Image for post
Photo by Ben White on Unsplash

I’ve developed with React for months without fully understanding the real power of the React component model. One day I decided to dive into composition, and this is what I learned.

React Components and Children

In React, a component can have one, many, or no children. Great, but wait — what are “children”? Let’s explain with an example:

The Profile component has two children: ProfileImage and ProfileDetails, while these two have no children.

“In JSX expressions that contain both an opening tag and a closing tag, the content between those tags is passed as a special prop: props.children” — React documentation

Essentially, props.children is a special prop, automatically passed to every component, that can be used to render the content included between the opening and closing tags when invoking a component. These kinds of components are identified by the official documentation as “boxes”. …

Simplifying debugging in the staging environment

Laptop featuring a 404 message sitting on a table.
Laptop featuring a 404 message sitting on a table.
Photo by Erik Mclean on Unsplash.

Providing simple but meaningful messages while handling errors in web services should be the preferred approach. This way, we will not expose any internal information about the causes of the errors and we will help the API client properly respond to issues.

When an error occurs, the default Spring Boot behavior is to return a stack trace. The main downside of this approach is that it might leak useful information about our implementation to a potential attacker. On the other hand, stack traces — unlike meaningful messages — are extremely important for debugging.

“Stack traces can tell the developer more about the sequence of events that led to a failure, as opposed to merely the final state of the software when the error occurred. Unfortunately, the same information can be useful to an attacker. The sequence of class names in a stack trace can reveal the structure of the application as well as any internal components it relies on.” …

Using Axios to build an automatic cancellation system in React

Image for post
Image for post
Photo by Safar Safarov on Unsplash

Oftentimes, users will interact with our system in unexpected ways. As a result, we must often think through potential problems so that we can overcome them pre-emptively. For example, what would happen if a user was to trigger two requests in a very short time? The response to the first request might arrive after the response to the second one, resulting in inconsistent data being rendered. Our initial method of countering this might be to debounce the requests, but what happens if users interact slower than the set debounce value? If this is the case then our initial fix would not work. Ultimately, the solution is to either prevent users from doing anything while waiting for a response or to cancel the previous request. The latter should be the preferred solution as it does not force users to wait for a result they might not be interested in. …


Antonello Zanini

Software Engineer, Freelancer, Dante enthusiast ‎‏‏

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store