How I approach a slow background job
Background job performance optimization requires systemic analysis beyond simple retries or thread allocation. Effective troubleshooting includes payload size reduction, external call isolation, internal profiling, batching strategies, and queue structure review.
Stop managing threads, start modeling systems
Effective concurrency requires thinking in terms of systems rather than low-level thread management. Languages like Elixir and Go enable this shift through lightweight processes and message passing that align with system thinking.
How I approach a slow SQL query
SQL query optimization requires diagnostic thinking rather than checklist application. Effective performance tuning involves distinguishing between design issues and scaling problems through EXPLAIN analysis, indexing evaluation, filtering optimization, and concurrency assessment.
How I Built a RAG System in Rails Using Nomic Embeddings and OpenAI
RAG doesn’t have to mean heavyweight infrastructure. In this post, I show how I wired up a lean Retrieval-Augmented Generation pipeline inside a Rails app using Nomic for embeddings, PgVector for search, and OpenAI for generation. The result is a flexible system: open-source at the embedding layer, powerful where it counts, and simple enough to extend without vendor lock-in.
What is Machine Learning?
Machine learning integration in Ruby applications encompasses supervised, unsupervised, and reinforcement learning techniques applied to recommendation systems, fraud detection, and natural language processing. Practical applications demonstrate how ML capabilities enhance traditional Ruby development workflows and create intelligent software solutions.
Implementing the Saga Design Pattern in Ruby on Rails
Distributed transaction management in microservices utilizes the Saga Design Pattern through choreography and orchestration implementations in Ruby on Rails. Cross-service data consistency, compensating transactions, and failure recovery mechanisms create resilient systems that handle complex business workflows across multiple services.
Elevating Your Ruby on Rails Apps with Value Objects
Chaotic Rails codebases transform through immutable value objects that encapsulate domain-specific concepts like money, addresses, and calculations. Implementation benefits include improved code readability, increased robustness through immutability, enhanced reusability, and superior error handling for maintainable applications.
Mastering the decorator pattern in Ruby on Rails
Rails applications gain enhanced functionality through Decorator Pattern implementation using SimpleDelegator, enabling dynamic behavior addition without tight coupling or complex inheritance hierarchies. Modular presentation logic promotes composition over inheritance while maintaining testable, maintainable codebases.
Autocomplete at Scale - How Tries and Partitioning Can Unlock Blazing-Fast Search in Ruby on Rails
Scalable autocomplete functionality achieving sub-millisecond response times with millions of records employs trie data structures and advanced partitioning strategies in Ruby on Rails. Performance optimization techniques include memory management, database partitioning patterns, and efficient prefix-based search algorithms.
Procs, Lambdas and Blocks in Ruby on Rails
Rails applications achieve enhanced maintainability and performance through strategic implementation of procs, lambdas, and blocks for collection filtering, view rendering, dynamic sorting, and parameterized logic patterns. Code examples demonstrate practical scenarios including reusable filtering logic and complex data manipulation workflows.