Connecting thoughts
Articles written by SINAPTIA about software development in general and Ruby on Rails and React in particular.
Rails performance at scale: fixing slow queries with millions of rows
After saving millions of records in SolidTelemetry, a database-backed OpenTelemetry implementation for Rails apps, we could see how the performance of a page degraded to the point of unusability. Discover how we made the page 22x faster.
Building intelligent applications with Rails
Why we choose Ruby on Rails for intelligent applications development and how Rails helps us strategically integrate and try out the latest improvements in the AI field.
Ruby Argentina May meetup
A recap of the Ruby Argentina meetup in Buenos Aires on May 14, 2025: Rails multi-tenancy, Service Objects, networking & community.
Smart augmentation: it's not always about scaling the team
When one of our current clients reached out to us, they wanted to boost their team’s productivity. After a thorough assessment, we proposed changes in infrastructure, processes, and workflow that led to 3x shorter cycle time, 3x optmization in infra cost and 4x optimization in team management. Read on to discover how we did it.
Ruby Argentina March meetup
On March 12th, another Ruby Argentina meetup occurred. We learned new things, met new people, and had some fun. Here’s a recap.
Let's talk about where and how to investigate CSS rules
“Let’s talk about” is a space where anyone in the company can pitch a topic, share it with the team, and help expand everyone’s knowledge. In this post, Diego shares a review of trusted sites that he uses to inquire into how the CSS rules work.
Let's talk about GraphQL
“Let’s talk about” is a space where anyone in the company can pitch a topic, share it with the team, and help expand everyone’s knowledge. In this post, Agustin and Lucas share their experience with GraphQL.
This week in #devs - Issue #5
Welcome to the fifth issue of “This week in #devs”, a series of posts where we share articles, thoughts, and conversations that happen in our #devs channel on Slack.
with_recursive_tree
In the last post we explored tree structure implementations for Ruby on Rails. In this post, we present a new implementation using Common Table Expressions.
Tree structures in Rails
Tree structures are a common way of organizing hierarchical data. In this post, we’ll explore existing solutions for Ruby on Rails, their benefits, drawbacks, and when to use them.
This week in #devs - Issue #4
Welcome to the fourth issue of “This week in #devs”, a series of posts where we share articles, thoughts, and conversations that happen in our #devs channel on Slack.
This week in #devs - Issue #3
Welcome to the third issue of “This week in #devs”, a series of posts where we share articles, thoughts, and conversations that happen in our #devs channel on Slack.
This week in #devs - Issue #2
Welcome to the second issue of “This week in #devs”, a series of posts where we share articles, thoughts, and conversations that happen in our #devs channel on Slack.
This week in #devs - Issue #1
Welcome to the first issue of “This week in #devs”, a series of posts where we share articles, thoughts, and conversations that happen in our #devs channel on Slack.
Debugging a memory-leaking action
This week we had to refactor a feature in one of the Ruby on Rails apps we’re maintaining. While at it, we discovered it was leaking memory, making the memory usage ramp up exponentially. With our expertise and the help of some tools, we were able to identify the root cause and fix the issue. Read on to learn more about how we approached this problem.
Rediscovering fixtures
Over the last couple of months, I’ve been investing a lot of time in improving my testing skills. I spent most of this time in going back to the basics, trying to start from scratch with every little concept one takes for granted. Trying to see everything through a child’s eyes. And today I’m rediscovering fixtures.
Guidelines for writing better specs
In our last couple of posts, we’ve been reviewing common problems with long-living RSpec test suites and contrasting them against Minitest and the four-phase testing strategy. There are situations where migrating to Minitest is safer and possible, but what can we do if we are still using RSpec and changing it is not an option?
Make minitest/unit Great Again
This sentence is wrong but funny. Minitest has always been great. In our last post, a situation made me think if I should be critical about how I test (and testing in general) and if I should do something about it. This is what happened next.
Don't over-engineer your tests
I’ve used RSpec for years, and until recently I had to work with a colleague that never really tested before. This process made me think if I should be critical about how I test and if I should (or shouldn’t) do something about it.
Optimize background jobs with Delayed::UniqueJob
Delayed Job doesn’t have a mechanism for defining unique jobs. Enqueing a time-consuming or resource-intensive job multiple times could be harmful if not treated accordingly. Introducing Delayed::UniqueJob, a Ruby gem for defining unique jobs in Delayed Job.
A remote require for Ruby
I have been fascinated by Deno’s remote import since I discovered it. Experiment with me on how to make a remote require for Ruby based on Deno’s remote import.
A discussion around Integer division in Ruby
We will explore Ruby’s division behavior and analyze several alternatives to obtain a true division.
Lesson learned: sharing context with Flutter dialogs
In Flutter, dialogs don’t automatically share the context with the parent widget. We found out while implementing providers. Learn how to solve the problem.
Reimplementing a broken search engine
We’ve been working with a boat marketplace for a year now. One of the most interesting challenges we faced during this time was reimplementing their broken search engine. This is how we did it.
What is a Skeleton Screen? A real-life Flutter example
Even though our primary focus is Ruby on Rails, we’re developing one Flutter application. In this project, we implemented a Skeleton Screen to enhance the app’s professional appearance during data loading. What is a Skeleton Screen and how did we implement one?
Why Ruby on Rails is still great for MVPs
Ruby on Rails remains a great framework for developing web applications. Thanks to its maturity and philosophy, one can build MVPs in a fast, efficient, and scalable way. Discover why Rails continues to be a great and influential framework to this day.
Long-awaited comparison validator comes to Rails 7
For years we had to manually compare values in our validations. Rails 7 added the comparison validator to ActiveModel. Read on and discover, as we just did, how it works.
Is Ruby on Rails secure?
This is one of the most frequently asked questions from people who want to build an MVP with Ruby on Rails.
I want to finish it quickly
Anxiety and lack of experience make junior developers want to finish their tasks quickly to prove that they can handle them.
Function Currying: A real-life use example
Moving your functions from a component to a separate file can improve readability and organization, but what happens when the data you need is outside the scope? In this article I will show you how I solved this problem with function currying.
la_plata.rb September meetup
On 14th September, another la_plata.rb meetup occurred. We had some fun and learned some new things. Here’s a recap.
Talking to hostile APIs
APIs allow us to communicate with third-party software in order to use their services and data. In today’s software, it’s almost impossible not needing to use one, one way or another. What if they are hostile?
Introducing Audited-UI
We’ve been using the audited gem for a couple of projects, but the lack of a built-in view to display the changes challenged us to write our engine. We are happy to introduce audited-ui.
Consequences of parrot-like APIs
Psittacism signifies repetitive speech in the manner of a parrot. Can APIs suffer from it and what are their consequences?
Quality Assurance, the SINAPTIA way
Quality Assurance takes a key role in software development. In this post, we’ll share our Quality Assurance process that allows us to deliver quality software.
Using strong_params beyond mass assignments
Strong Parameters are typically used in Ruby on Rails for mass assignments, but in this article, we explore an additional use for this feature.
Don't do this at home
Service objects is a Ruby on Rails pattern widely used. In this post, I’ll show you one example I stumbled upon recently. What’s wrong with it and how did we fix it?
Quality Assurance automation on a serverless architecture
Nowadays, technology is evolving at an unprecedented rate, presenting us with new challenges and opportunities. One challenge is adapting to new architectures, and in this post, we will explore how we did QA Automation on a serverless architecture.
Nativifying a docker development environment
I’ve been working on docker exclusively since 2018. Besides its many benefits, it could be tiresome to type longer commands every single time. How do I do it without losing my mind?
React by example: Slider Panel
Slider panels are widely used nowadays. In this post, we’ll build a fully functional custom React slider panel with Tailwind. Ideal for overlay menus, navigation, content lists, or even forms or configuration panels!
Don't build lasting relationships with your components
Overcomplicated props, ingrowing learning curves, and eventual technical debts are symptoms that appear as new requirements emerge on a project. Design Systems evolve outgrowing our components, leading toward their end. How can we ensure that our components thrive against the design challenges we encounter daily?
Bringing a 10-year-old Ruby on Rails app back to life
Last week we published the case study of one of our first projects. After 10 years in the archive, I found and brought this old Ruby on Rails 4.0 application back to life.
The role of design in MVPs
Finding a good balance between design and development is one key aspect to take into account while developing an MVP. Visually appealing products have a bigger impact on the market than one built from a template. But, is it the right choice for your project?
Hybrid and Dynamic Database Multitenancy with Ruby on Rails
What is it and how to achieve it with Rails and Postgres? Learn how we successfully implemented this flexible and scalable architecture in a real-world project.
Dynamic horizontal slider using React and custom hooks
Build a custom React slider panel with Tailwind CSS. This post guides you through creating a flexible, component ideal for menus, navigation, or forms.
Debunking myths about Ruby
There’s a lot of criticism of Ruby and Ruby on Rails. In this post, we will try and debunk four widespread myths about Ruby.
The five strings paradox
There are five interdependent forces in every software project that can drive it to success or to utter failure. Read on if you want to learn about how they work and how to wield them.
Why Ruby on Rails?
Ruby on Rails is our main tool for building MVPs and big web applications. People say it’s old, dead, slow, that it’s not relevant anymore. Wrong! Here’s why.
Beware of this status update
Following our discussions on effective communication, this post analyzes common pitfalls in status updates and offers strategies to prevent them from hindering team productivity and client relationships.
The best status update
Status updates are often regarded as monotonous, repetitive, and useless. But for us, they’re the most powerful and simple tool we have to deactivate all sorts of communicative issues the main way to build successful and enjoyable relationships with our clients.
Communication matters
Communication is a key aspect of our culture and development process. Do you want to know why and how?
Your old Ruby on Rails application sucks
Do you have a Ruby or Rails application in production for more than 4 or 5 years? Has the test suite crumbled to pieces because of too many broken or flaky tests that no one has time to fix? Do you feel your app needs a lot of love that no budget will ever be able to sustain? Read on to know what we do in these cases.
Taking over a project, the SINAPTIA way
Learn SINAPTIA’s methodology for taking over existing projects, from initial onboarding and roadmap creation to efficient development and fast delivery of new features or maintenance.
Upgrading Ruby on Rails applications
Learn our approach to upgrading Ruby on Rails applications. Discover why staying current with the latest framework versions is crucial for security, performance, and future maintainability.
Working remotely effectively
We are a fully remote company, and as such we understand the downsides of working remotely. How do we effectively do it?
Building an MVP with SINAPTIA
What to expect before, during, and after building an MVP with us. Deep dive into the process: from the discovery phase to launch!
What is an MVP?
Discover what an MVP is and how to build one effectively. This guide helps you validate product ideas, prioritize features, and launch quickly to gather essential user feedback.
Mounting react components
Our approach to building modern React frontends within a Ruby on Rails monolith makes use of the best of both worlds.
A case against form objects
Explore the concept of form objects in Ruby on Rails, their architectural purpose, and why a more disciplined approach to code organization is often beneficial.
Docker in development: Episode 4
In this episode of our Docker in development series, discover various alternatives and tips to optimize your Docker images, reducing their size and improving efficiency.
Docker in development: Episode 3
In this episode of our Docker in development series, learn how to perform everyday tasks within your Docker containers, including running rake tasks and managing databases.
Docker in development: Episode 2
In this episode of our Docker in development series, we’ll guide you through the process of dockerizing a Ruby on Rails application step-by-step.
Docker in development: Episode 1
Explore the benefits of Docker for development, with practical tips for Ruby on Rails and React projects. Learn how it streamlines setup and ensures consistent environments.