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. …
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. …
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. …
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.
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
company2.example.com) on a single machine. — Apache documentation
Apache breaks its functionality and components into individual units that can be configured independently. …
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? …
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. …
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.
In React, a component can have one, many, or no children. Great, but wait — what are “children”? Let’s explain with an example:
Profile component has two children:
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
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”. …
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.” …
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. …