Software Developer 15+ years working for companies worldwide

Pinned
gitlinux

Git fundamentals, a complete guide

If you already work with Git daily but want to have a good comprehension of Git fundamentals , then this post is for you. Here, you’ll have the chance to truly understand the Git architecture and how commands such as add, checkout, reset, commit, merge, rebase, cherry-pick, pull, push and tag work internally. Don’t let...

🇺🇸
assembly

Arrays in x86 Assembly

Originally posted in Portuguese Recently I wrote a 6-article series about x86 Assembly (written in Portuguese, but I’m planning to translate the guide...

🇺🇸
kafkaunix

You don't need Kafka: Building a message queue with only two UNIX signals

Have you ever asked yourself what if we could replace any message broker with a very simple one using only two UNIX signals? Well, I’m not surprised i...

🇺🇸
blog

Voltando às raízes de blogueiro

Já faz um tempo que não escrevo aqui no blog. E também já faz bastante tempo que tenho o interesse em voltar a escrever mais como fazia antigamente, q...

🇧🇷
braziliandevs

Um resumo do meu 2024

31 de Dezembro de 2024. Sentado no sofá e assistindo Frozen, tive a ideia de escrever sobre minha retrospectiva deste ano. Nunca fiz isso antes, então...

🇧🇷
assembly

Arrays em Assembly x86

Recentemente escrevi uma saga de 6 artigos sobre Assembly x86, abordando conceitos fundamentais de arquitetura de computadores e programação low-level...

🇧🇷
braziliandevsassembly

Construindo um web server em Assembly x86, the grand finale, multi-threading

Uma vez que temos um web server funcional, podemos dar o próximo (e último) passo, que é deixar o servidor minimamente escalável fazendo uso de uma po...

🇧🇷
braziliandevsassemblycomputerscience

Construindo um web server em Assembly x86, parte V, finalmente o server

No artigo anterior, passamos pelos fundamentos de Assembly, onde foi possível entender alguns conceitos básicos tais como tipos de registradores, stac...

🇧🇷
computersciencebraziliandevsassembly

Construindo um web server em Assembly x86, parte IV, um assembly modesto

Uma vez que temos uma compreensão sobre sistema binário, hexadecimal, ASCII e código de máquina, chegou o grande momento de entrarmos no assunto princ...

🇧🇷
assemblybraziliandevs

Construindo um web server em Assembly x86, parte III, código de máquina

Agora que já temos uma base de entendimento sobre hierarquia de memória, arquitetura de CPU e registradores, vamos aplicar estes conceitos em exemplos...

🇧🇷
assemblybraziliandevs

Construindo um web server em Assembly x86, parte II, história e arquitetura

No artigo anterior demos uma introdução não-técnica sobre o que será esta saga de Assembly x86 conforme avançamos na construção de um web server. Agor...

🇧🇷
assemblybraziliandevs

Construindo um web server em Assembly x86, parte I, introdução

Assembly . Para alguns, um monstrinho. Pra outros, algo antiquado. Mas pra quem tem curiosidade em entender como as coisas funcionam, oportunidade . N...

🇧🇷
webdev

Superficial, básico e avançado

Ufa, finalmente meu primeiro artigo de 2024. Criei vergonha na cara coragem e resolvi sentar e escrever um pouco. Vou voltar a escrever coisas técnica...

🇧🇷
rust

Building a dead simple background job in Rust

In today’s post we’ll explore how to create a basic background job in Rust, simulating Rust channels with a Vector-based queue. First things first Gen...

🇺🇸
rustdatastructures

Understanding the basics of Smart Pointers in Rust

In today’s post we’ll delve into the basics of smart pointers in Rust, while we build from scratch a simple linked list - starting from a singly linke...

🇺🇸
rubywebdev

Compiladores, trampolim, deque e thread pool

Faz alguns dias que não escrevo. Minha rotina mudou um pouco e também tenho focado em estudar algumas coisas que eu não tinha tanto domínio. Entretant...

🇧🇷
braziliandevsrustrubygo

Rust, Go, Rinha e I/O

Este artigo é o início de um formato diferente de conteúdo que quero experimentar, um apanhado (ou resumão, ou dump, como queiram chamar) de coisas qu...

🇧🇷
programmingrubybraziliandevs

Entendendo fundamentos de recursão

Se pra você: Recursão é um tema obscuro ou quer entender mais um pouco sobre; Tail call e TCO são meios de comunicação alienígena e; Trampoline é nome...

🇧🇷
computersciencebraziliandevs

Vencendo os números de ponto flutuante: um guia de sobrevivência

TL;DR Se quer poupar tempo e ir direto ao assunto, para cálculos precisos, prefira decimais de precisão arbitrária ou equivalentes como BigDecimal em ...

🇧🇷
computerscienceprogramming

Winning at floating-point issues: a survival guide

TL;DR For precise calculations, favor arbitrary-precision decimals or equivalents like BigDecimal over floating-point numbers. Additionally, avoid unn...

🇺🇸
gitlinuxbraziliandevs

[pt-BR] Fundamentos do Git, um guia completo

Se você já trabalha com Git diariamente, mas deseja ter uma boa compreensão dos fundamentos do Git, então este post é para você. Aqui, você terá a cha...

🇧🇷
rubymachinelearningaineuralnetworks

AI & Ruby: an introduction to neural networks

Currently we find ourselves in the middle of the hype surrounding Artificial Intelligence (AI) and all its buzzwords. It’s natural to feel that terms ...

🇺🇸
kubernetesdocker

Kubernetes 101, part VIII, networking fundamentals

So far, we have gained an understanding of the primary workload objects in Kubernetes. These objects enable us to effectively run and manage multiple ...

🇺🇸
kubernetesdocker

Kubernetes 101, part VII, jobs and cronjobs

Our previous article, we learned how DaemonSets can effectively collect data from Kubernetes nodes, allowing data to be structured and sent to appropr...

🇺🇸
rubyrails

A comprehensive introduction to Ruby

Another tutorial for learning Ruby? Absolutely not . This guide is different from the typical tutorials you’ll find online. As someone new to Ruby, yo...

🇺🇸
kubernetesdocker

Kubernetes 101, part VI, daemonsets

For most use cases, deploying core business apps in Kubernetes using Deployments for stateless applications and StatefulSets for stateful applications...

🇺🇸
kubernetesdocker

Kubernetes 101, part V, statefulsets

In the previous article, we explored ways to handle pod updates without affecting availability , using Deployments . This article will cover stateful ...

🇺🇸
sqldatabasepostgres

SQL JOIN explained

In this post we’re going to see how the SQL JOIN works, guided by a practical example while covering SQL and Set theory basics. Even though you’re not...

🇺🇸
gitlinux

Git fundamentals, a complete guide

If you already work with Git daily but want to have a good comprehension of Git fundamentals , then this post is for you. Here, you’ll have the chance...

🇺🇸
kubernetesdocker

Kubernetes 101, part IV, deployments

In the third part, we went a bit further and learned how Kubernetes employs self-healing capabilities by using the controller pattern through the util...

🇺🇸
kubernetesdockerk8scontainers

Kubernetes 101, part III, controllers and self-healing

The second part of this series explained how Pods work while building a Pod having two containers communicating to each other using FIFO and a shared ...

🇺🇸
kubernetesdockerk8scontainers

Kubernetes 101, part II, pods

In the previous post we’ve seen the fundamentals of Kubernetes as well as an introduction to its main architecture . Once we got introduced, it’s time...

🇺🇸

Kubernetes 101, part I, the fundamentals

It’s been a while I wanted to take a time to sit down and write about Kubernetes . The time has come. In short, Kubernetes is an open-source system fo...

🇺🇸
kubernetesdockeragile

Tekton CI/CD, the grand finale, interceptors

We learned in the previous article how to delivery applications using Tekton and the kubernetes-action Task being part of our Pipeline. But let’s thin...

🇺🇸
firstpostcareerdiscuss

Tekton CI/CD, part IV, continuous delivery

The previous post demonstrated how to listen to Github events and trigger a pipeline based on such event. So far, the pipeline consists in: fetching t...

🇺🇸
tutorial

Tekton CI, part III, listen to Github events

For this guide I’m assuming you are running a local Kubernetes cluster. In the previous article we’ve seen how to share information across a Pipeline ...

🇺🇸
kubernetescilinuxdocker

Tekton CI, part II, sharing information

In the previous post, we viewed an introduction to Tekton and a brief overview through its main components: Steps, Tasks and Pipelines . Now, let’s ke...

🇺🇸
discusssoftwaredevelopmentagile

Tekton CI, part I, a gentle introduction

In another post I talked about CI/CD in a nutshell and its fundamentals, before going further on Tekton . In case you need, I suggest you reading that...

🇺🇸
cicdsoftwareengineering

CI/CD in a nutshell

CI/CD is a popular practice that many companies and projects use today. However, sometimes we use these terms mistakenly, but in this article we’ll di...

🇺🇸
leadershipmanagementtechnology

Seu dinheiro não é infinito

Se você tem algum tipo de influência nas decisões arquiteturais de software no local onde trabalha, e a empresa ou instituição não tem dinheiro infini...

🇧🇷

Liderança começa com confiança: minha trajetória

Neste post, quero compartilhar um pouco da minha trajetória e alguns valores sobre trabalho em equipe e liderança que costumo aplicar no meu dia-dia. ...

🇧🇷
dockerlinux

Thinking like containers

We can’t deny how popular Docker containers became on the daily basis of many software developers around the world. Moreover, it is a mainstream techn...

🇺🇸
oopbashlinux

Simulating OOP in Bash

Everyone knows that OOP stands for “Object-oriented programming”. But what is in fact OOP? Is it a Class ? Is it inheritance and polymorphism like we ...

🇺🇸
webdevhtmlcssjavasccript

Building a Web server in Bash, the grand finale

What a journey. In the previous post we experienced a refactoring in our ShellScrpit web server, adding a complete login/logout system to it. Now, let...

🇺🇸
webdevlinuxhtmlshellscript

Building a Web server in Bash, part III - Login

In the previous posts we’ve seen how to manipulate sockets using netcat . Moreover, we learned how to start reading and parsing an HTTP message using ...

🇺🇸
webdevhttplinuxshellscript

Building a Web server in Bash, part II - parsing HTTP

In the first part of this guide, we walked through the basics of netcat nc command, from basic UNIX sockets to TCP sockets, all the way writing an HTM...

🇺🇸
webdevhttplinuxshellscript

Building a Web server in Bash, part I - sockets

Have you ever wondered how a Web server works under the hood ? Moreover, would you be willing to sharpen your Shell scripting skills? Maybe this guide...

🇺🇸
unixlinux

Inter-process communication: pipes

After learning how OS processes can use file descriptors for IPC, it’s time to analyse another IPC approach: pipes. Let’s recap the following example:...

🇺🇸
unixlinux

Inter-process communication: files

In the previous post we learned that computers evolved to tackle concurrency , the reason why operating systems were created in order to share compute...

🇺🇸
unixlinuxoperatingsystemsthreads

A brief history of modern computers, multitasking and operating systems

In this article I’ll try to write a brief history of modern computers, multitasking and how operating systems tackle concurrency. 40s The first modern...

🇺🇸
kubernetesprometheusgrafana

Métricas cAdvisor no Kubernetes com Prometheus e Grafana

No último artigo vimos o funcionamento básico do Prometheus e como configurar um servidor Prometheus em um cluster Kubernetes . (lembrando que estou u...

🇧🇷
prometheuskubernetesdocker

Prometheus on Kubernetes 101

Prometheus é um projeto open-source escrito em Go, criado em 2012 e utilizado para monitoramento e sistema de alerta de aplicações. Foi desenvolvido o...

🇧🇷
dockerlinuxnginx

Mastering the Docker networking

Few months ago I demonstrated through a practical example the reasons to understand and take advantage of Docker volumes. In this one, I’ll try to do ...

🇺🇸
unixlinuxpipes

Implementando um simples background job com UNIX named pipes

No último artigo vimos o funcionamento de UNIX streams, pipes e mais precisamente, anonymous pipes . E que estes canais são uma das bases de comunicaç...

🇧🇷
unixlinuxpipe

Entendendo UNIX pipes

Basicamente, a todo comando UNIX é atribuído um conjunto de streams, que são canais de comunicação. Ou seja, um comando pode enviar dados para uma str...

🇺🇸
sqlpostgrescte

Resolvendo problema de performance no PostgreSQL com CTE

Spoiler : a query ficou 23x mais rápida com CTE’s apenas transformando o problema quadrático em linear. Sem índices . Um dos cenários mais comuns de p...

🇧🇷
rubygraphql

A very simple GraphQL tutorial in Ruby

According to Wikipedia GraphQL is an open-source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing dat...

🇺🇸
dockercontainerslinux

Mastering Docker Volumes

For those just starting with Docker, I’ve written some posts on how to think like containers, which I believe to be an important mindset to using Dock...

🇺🇸
programmingrubyalgorithms

How to reduce the time complexity of nested loops

In this post I’ll demonstrate a way to understand, analyse and reduce the time complexity on algorithms, specially on nested loops . The examples will...

🇺🇸
postgres

A powerful full-text search in PostgreSQL in less than 20 lines

This blogpost will guide you to understand the fundamental pieces needed to implement a good enough full-text search using PostgreSQL. Spoiler alert :...

🇺🇸
haskellnetworkingtcpruby

A CRUD journey in Haskell, part II, Socket programming

Assuming that we’ve got some introduction to Haskell, let’s start doing some Socket programming in order to build a simple TCP server. Requirements Fo...

🇺🇸
haskellprogrammingfunctional

A CRUD journey in Haskell, part I, introduction

In the past few days, I’ve been learning some Haskell after years of seeing people praising this programming language, be it about its expressiveness ...

🇺🇸
dockercontainers

Using Docker in development the right way

If you are not proficient in Docker, or that topics like containers and virtual machines are still a bit “fuzzy”, have problems working with Docker in...

🇺🇸
rubyhtmlcssjavascript

Web basics: sending HTML, CSS and Javascript content through HTTP

Now that we have an HTTP server sending plain text content, it’s time to enhance the server so it can respond in a more appropriate content type for W...

🇺🇸
rubytddhttp

Web basics: a simple HTTP Server in Ruby

In the previous article, we learned the very basics of networking and how to write a simple TCP server in Ruby. Here, we’ll see a simple implementatio...

🇺🇸
rubytcphttpprogramming

Web basics: a TCP Server in Ruby

This series guide covers the very basics of Web and the building blocks of a Web server. If you have ever wondered on how a Web server works and have ...

🇺🇸
rubytdddockermakefile

Boilerplate for a containerized plain Ruby application

Recently I’ve been poking around automation in order to experiment and build software on destroyable environments, so that I won’t mess up with my ope...

🇺🇸
rubyquicksortalgorithmstdd

Quicksort, a Ruby implementation using Test-driven development

Quicksort is a sorting algorithm designed to have a reasonable time complexity . In average, most implementations of this algorithm are capable of com...

🇺🇸
githubawsekskubernetes

Deploy to Kubernetes using Github Actions (including Slack notification)

In this guide we’ll cover the full cycle of deploying to Kubernetes using Github Actions. Batteries included: Kubernetes cluster running in AWS EKS Do...

🇺🇸
rubyprogrammingsoftwaredevelopment

Ruby blocks made easy, part III ~grand finale~, blocks and syntactic sugar

In this series of posts, we already covered that methods can be transformed into procs and as such, can be evaluated later . Furthermore, we’ve seen t...

🇺🇸
rubyprogrammingsoftwaredevelopment

Ruby blocks made easy, part II, curry and procs as arguments

In the previous post, we learned that methods can be transformed into procs to be evaluated later . One thing worth to mention is that, the method its...

🇺🇸
rubyprogrammingsoftwaredevelopment

Ruby blocks made easy, part I, methods and procs

Blocks in Ruby are powerful structures that are part of our daily basis as Ruby developers. We see them being used across a variety of standard classe...

🇺🇸
Page 1 of 8