Ruby 3 is coming out at the end of 2020 🎉 and one of the most expected features is the new approach for parallel execution called Ractor (Ruby’s actor-like concurrent abstraction).

Here in this post, we will build a simple Sidekiq-like worker pool using Ractor.

Remember that at this moment, Ruby 3 isn’t in a stable version yet, so the interface may be changed.

Why Ractor?

As ko1 explained, Ractor achieves the following goals:

  • Parallel execution in a Ruby interpreter process;
  • Avoid thread-safety issues (especially race issues) by limiting the object sharing;
  • Communication via copying and moving.

The project described in this…


Image for post
Image for post
Photo by Santiago Lacarta on Unsplash

Ano passado eu fui a um evento sobre desenvolvimento de software, e em uma das trilhas havia uma palestra sobre saúde mental. Para mim, o tema se tornou uma área de interesse pessoal e profissional nos últimos anos, e fui assistir.

A apresentação era um relato de um desenvolvedor que passou por um burnout seguido por uma crise de depressão. Ouvir um relato como esse é sempre tocante, mas aquilo mexeu comigo porque eu conseguia ver amigos muito próximos que passaram ou estão passando por situações parecidas. Eu conseguia ver que aquilo poderia ter acontecido comigo em algum momento.

Temos…


Image for post
Image for post
C. R. Knight, Mural dos Poços de Alcatrão de La Brea

Minha maior motivação para ler O Mítico Homem-Mês foi querer entender como um livro sobre gestão de projetos de software escrito em 1975 poderia permanecer relevante até hoje.

Desde lá escrever software mudou muito. Novas linguagens surgiram, limites de hardware foram superados, e a internet mudou completamente a forma de distribuir produtos. Mesmo assim as ideias centrais do livro continuam válidas.

Nesse review vou compartilhar e fazer comentários sobre as partes que eu mais gostei, incluindo os capítulos finais adicionados nas edições de 10 e 20 anos.

O Mítico Homem-Mês

O capítulo que dá nome ao livro fala sobre como a produtividade de…


Image result for ruby lang

The idea of this benchmark came from the Nate Berkopec’s blog post published on December 4, 2017, which demonstrates how multi-threaded Ruby programs may be consuming much more memory that they need, due to memory fragmentation caused by malloc.

I’ve done the tests using concurrent-ruby in a simple 34 lines script that can be found in this repository — it is very easy to run in a working Ruby environment. All the results are committed in the logs folder as well.

Memory usage and performance were measured for each of these factors:

  • glibc 2.23
  • glibc 2.23 with MALLOC_ARENA_MAX=2
  • glibc 2.23…


Image for post
Image for post

O Brasil vive uma crise de segurança que não é recente. Segundo os dados publicados no Mapa da Violência, em 2014 ocorreram 42 mil homicídios no Brasil apenas por arma de fogo, o que nos leva a uma taxa de 21,2 homicídios a cada 100 mil habitantes.

Para comparação, nos Estados Unidos foram registrados 4 homicídios por arma de fogo a cada 100 mil habitantes em 2015, e esse número já é alto em comparação com outros países desenvolvidos.

Nesse cenário, uma das propostas de segurança do presidente eleito do Brasil é flexibilizar o porte e posse de armas, assunto…


Learnings applying the approaches proposed by Brandon Hilkert

Image for post
Image for post

Sidekiq is the most used solution nowadays in the Ruby community to handle background processing. It uses Redis to control the jobs queue and it’s being used by companies like Heroku, Netflix, and Digital Ocean.

It’s simple to install and start using it along with a Rails app. If you’ve never seen how it works, here is a common architecture example.


Lições aprendidas usando regressão para prever desempenho de jogadores

Image for post
Image for post

O CartolaFC é um fantasy game do Campeonato Brasileiro criado pela Globo.com.

O conceito do jogo é muito simples. Os usuários escalam seus times a cada rodada do campeonato (com jogadores reais) e pontuam conforme o desempenho desses jogadores naquela rodada.

A diversão está no fato de que o futebol é muito difícil de prever, especialmente no Brasil que possui uma das ligas mais equilibradas do mundo.

Diante desse problema, será que seria possível utilizar dados do próprio Cartola para ser mais assertivo ao escolher os jogadores?

Nesse texto vou compartilhar o experimento que fiz na rodada 25, e as…


Low hanging fruits to get your application faster

We know Ruby improved a lot regarding performance since version 1.9 and it proved to be a scalable option for web applications (even after all Twitter fail whales).

However, it’s still not that fast and it won’t change very soon.

So, in this post, I will cover the most frequent performance issues I’ve seen in web applications and how to solve them, from the very basics to the not too obvious solutions.

Database Access

Starting from the most common issues, database operations are slow because the cost to read and write in the hard disk is high, so you have to do…

André Guimarães Sakata

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