Os 5 livros que mais fizeram diferença em minha vida em 2020

top 5 livros para 2021

Uma das metas que coloquei para meu 2020 foi ler 25 livros ao longo do ano. Para minha surpresa consegui bater essa meta lendo um total de 32 livros.

Decidi fazer esse post para compartilhar quais foram os 5 livros que fizeram a maior diferença na minha vida.


Adding obstacles to the board before the execution of shortest path algorithms

In the first part of this study, we have implemented two classes to draw an empty board. Now that we have these classes, we’ll change them a little bit just to randomly make a few nodes look blocked. Just to remember, this study is divided into three parts.

The division intends to make it easier to understand and visualize the algorithm.

# 1 - Imports

Since we’ll randomly choose which node to block, we have to import a native library called random.

from PIL import Image, ImageDraw
import random

# 2 - Classes


Drawing an empty board to visualize the execution of shortest path algorithms.

This is the first part of a study on how shortest path algorithms work. This study is divided into three parts.

  • 1) Draw an empty board
  • 2) Add obstacles randomly
  • 3) Implement the shortest path algorithm

# 1 - Dependencies

Before we start writing code, we need to install the python library Pillow.

pip install Pillow

# 2 - Imports

To draw the board, we need to import Image and ImageDraw classes from the Pillow library.

from PIL import Image, ImageDraw

*PIL is short for Python Image Library

# 3 - Classes

Now that we have our dependencies installed, let’s start defining the Node class.

The Node class will hold each position…


If you are thinking in try Gentoo, this is for YOU!

4 years ago I saw a post from Avelino where they show a kernel being compiled on his notebook. I remember that because was the first time I heard about Gentoo.

At the time, I was working with a guy that use Arch. I told him that want to learn more about how Linux works. After a talk about Arch and Gentoo, I decided to start my journey in Gentoo world.

4 years have passed and I want to share a little about my experience.

It’s not easy

The first “flavor” of Linux that I have used was Debian. …


How to use yarn workpaces and git submodule inside an Angular CLI project

Angular CLI + Yarn + GIT

Click here to share this article on LinkedIn »

Sometimes we wanna create private modules and share them between projects. One of the best ways to do this is using git submodule and yarn workspace.

I’ll show how to do this and use the module inside an Angular CLI project. First of all, let’s create our shared module.

One of the most important parts of the module is the package.json. Here we have to declare at least the name and version of the package.

package.json of shared module

The module dependencies have to be declared here too. If you…


Some examples of things we can do with NgRx selectors

Selectors are basically the way to filter and retrieve a piece of data from the application state.

If you are using @ngrx/entity, after creating an adapter, you can take advantage of the function getSelectors. This function will return 4 basic selectors.

But, if you want to filter the state in a different way, you have to use the createSelector function to do that.

This function accepts between 1 to 8 arguments plus a result function to execute the filter. All arguments will be available to the result function, so you can use them together to execute the filter.


Como melhorar a performance de uma aplicação com OnPush

Angular change detection

Change Detection é uma das principais funcionalidades do Angular, responsável por marcar os componentes quando um evento ocorre. Dessa forma, os componentes podem (caso implementem o evento) modificar a view.

Por padrão, o Angular trabalha de forma conservadora. Ou seja, quando ocorre um evento, todos os componentes são marcados para verificar se algo deve ser modificado nas views.

O desenho abaixo — sim, eu sou o artista plástico responsável pela obra de arte que vocês está preste a ver — ilustra o que acontece em uma aplicação Angular quando um evento ocorre.


Veja como fazer para importar seus módulos usando path absoluto no Typescript

Absolute Path in Typescript

Quando trabalhamos com typescript, existem basicamente 2 tipos de imports que fazemos.

Um módulo que instalamos, onde o path vem direto do node_modules ou um módulo que estamos desenvolvendo dentro da aplicação atual.

Normalmente, quando utilizamos a segunda forma, trabalhamos com caminhos relativos.

Se o caminho for curto, como o exemplo acima, não fica tão difícil de se gerenciar. No entanto as vezes temos caminhos mais distantes para serem percorridos, como no exemplo abaixo.

Isso vai tornando a complexidade dos imports cada vez maior, já que é preciso ficar contando quantos níveis de pasta devemos voltar.

Outro problema…


Esqueça aquele “modelo” que aprendemos com os astros da tecnologia. Ser arrogante não te torna nada além de… Arrogante mesmo!

House of Cards

Durante os últimos anos, tornou-se comum a confusão entre essas duas palavras. Alguns chegam a achar que são “sinônimos”, enquanto outros acreditam que para ser um é preciso, necessariamente, ser o outro.

Eu mesmo era uma dessas pessoas. Acreditava que para ser um gênio ou alguém que domina algo, a arrogância e grosseria deveriam ser “parte do pacote”.

Por alguns anos, fui completamente grosso e irritadiço por coisas muito pequenas. Achava que assim seria um desenvolvedor mais respeitado e reconhecido…

Sabe qual foi a única coisa que ganhei com esse comportamento? Ser mal visto, incompreendido e, por algumas vezes, deixado…

Tiago Temporin

Angular and Go programmer. Open Source lover ❤!

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