Maikhel · Blog

Blog

Writing about Ruby, software engineering, and lessons learned while building and maintaining production systems.


Load Path in Ruby - How It Works?

December 15, 2025

Recently, I encountered a weird Ruby error: Gem::LoadError: You have already activated X, but your Gemfile requires Y. A quick Stack Overflow search and a few commands with Bundler, and it was fixed. But it got me thinking: why did it happen in the first place? What does it even mean to activate a gem, and how may Ruby want to activate two gem versions at the same time? Let’s search for answers together.

Tradeoffs of Anonymising Production Data

August 18, 2025

At some point, in every Rails project, someone says: ‘Hey, our testing dataset is not relevant anymore, maybe we could anonymise production data and use it instead?’. That’s when a tough journey begins: ensuring data privacy, updating scripts, and securing infrastructure. Let’s explore the challenges you might face if you decide to anonymise your production data.

How to become Ruby Certified Programmer

December 20, 2024

Official certifications aren’t very popular in the Ruby on Rails community, but one is available if you’re interested: the Ruby Association Certified Ruby Programmer Examination. This test checks your knowledge of the Ruby programming language. I decided to give it a try! I passed the exam and want to share my insights to help you do the same.

Handling Errors in Concurrent Ruby

October 22, 2024

In the previous blog post on Ruby concurrency, we explored how to spawn many sub-threads with a concurrent-ruby gem. Let’s continue the topic and get to know the Future class much better: its life cycle, state methods, and strategies for error handling.

Smooth concurrent updates with Hotwire Stimulus

June 07, 2024

In the previous blog post, we learned how to create a simple progress bar with Hotwire Turbo and broadcast updates to the frontend. But sometimes, simple solutions aren’t enough. It’s time to get familiar with another part of Hotwire: Stimulus! In this article, I’ll demonstrate how to use Stimulus to handle more complex frontend logic.

Showing progress of background jobs with Turbo

April 08, 2024

Hotwire Turbo constantly changes the way we build backend-frontend integrations. Things that were complicated before, can now be done with a few lines of Ruby code. Let me present how to transmit progress information from background jobs into the frontend.

From Celluloid to Concurrent Ruby: Practical Examples of Multithreading Calls

January 05, 2024

Multithreading is a hot topic in the Ruby community. There are many good sources of theoretical knowledge (e.g. this blog post written by Janek), so let’s focus more on practical use cases. In this article, I’m showcasing a few different ways of making asynchronous calls within a single process and ensuring their completion.

Easy introduction to Connection Pool in ruby

September 01, 2023

As Rails developers, we often encounter performance issues in different parts of our applications. But establishing connections to external services is usually the place we overlook. Let me introduce the concept of connection pooling and show you an example of easy, performant connections to RabbitMQ.

A simple guide to pessimistic locking in Rails

June 23, 2023

In the Rails world, optimistic locking is relatively well known, while its pessimistic alternative is often overlooked. In this blog post, I will present how to effectively use pessimistic locking in Rails applications.

5 steps to start using Getting Things Done

January 30, 2023

Welcome to my guide on how to boost your productivity with Getting Things Done. I already shared my experiences and tools in other blog posts. This time I have a step-by-step recipe to help you start using GTD. Grab a coffee and let’s go!

My GTD setup

December 22, 2022

Getting Things Done is an awesome productivity framework. But it’s just a framework. It provides instructions and rules, but everyone must adjust them to personal preferences and needs. So did I. Let me share what tools and notebook structure I came up with to implement GTD.

My thoughts after using Getting Things Done for 10 years

October 18, 2022

Getting Things Done is an important part of my life. I’ve been using it for almost ten years now! It helps to organize my projects and boost my productivity. Let me share my thoughts about the pros and cons of this method. Enjoy reading!

Data Quality in Ruby on Rails

August 10, 2022

Preserving data quality is always a challenge. Especially in the Ruby on Rails world where products ship fast. It means some compromises are made along the way and often data quality is sacrificed. And when it comes to data - it’s better to prevent than cure. Continue reading to see how you can avoid many data problems, at different stages of Rails app development. You will thank me later.

Why I use Getting Things Done

May 14, 2022

I’ve always been curious about productivity tools and techniques to try. But when I read a book written by David Allen, it amazed me. I finally found a framework that could replace the to-do lists I was rewriting every day! Let me share the most beneficial aspects of GTD.

How to receive emails with a Rails app in 2021

February 26, 2021

Some time ago, we needed to implement a full email inbox feature in the Ruby on Rails application. It was supposed to have all the basic functionalities that regular email inboxes have: send and receive messages, collect them in threads, have a contact book, etc. While email sending is a relatively frequent feature among Rails applications (there are tons of different solutions around the web), receiving messages is not so popular. So, let’s take a look at possible ways of building an email receiver mechanism with Rails.

Three strategies that work in board games and in real life

December 31, 2019

When playing board games, I always try to improve my performance and find some clever way to beat my opponents. I love analysing, discussing and recalling past games to find the most useful strategy and see things that are not seen by other players. This allowed me to form a few simple rules that increase chances of victory — not only in board games but also in real-life activities.

Let's prototype

July 04, 2019

Uncertainty is an inseparable part of creating any software. At the beginning of the project you never have a full knowledge about future requirements and features. Developers don’t know the whole specification, project manager doesn’t know all clients’s expectations and usually clients are not aware about all features their product should have. When the amount of unspecified requirements is significant, choosing to create a prototype could be really beneficial.