🚨 Introducing GemGuard: Automated Security for Ruby Gems (Scan, SBOM, Typosquat, Auto-Fix)

GemGuard is my attempt to make Ruby security less of a chore and more of a natural part of development. It scans your Gemfile.lock against OSV.dev and the Ruby Advisory Database, flags typosquat risks, and can even generate SBOMs in SPDX or CycloneDX formats. If it finds a vulnerable gem, it’ll suggest or apply safe upgrades, and because it’s designed with CI/CD in mind, you can drop it into your workflow without slowing things down.

Designing for operations

Operational excellence in system design prioritizes maintainability and debuggability alongside performance. Key practices include stable API contracts, structured logging, idempotent operations, and proactive error handling to reduce operational overhead.

Flow Over Frameworks: What Really Helps Teams Move Faster

Team velocity optimization requires focusing on workflow efficiency rather than rigid methodology adherence. Practical approaches include dropping sprint commitments, limiting work-in-progress, using short planning cycles, and aggressive backlog pruning.

The architecture of trust

Reliable system architecture emerges from patience and iterative refinement rather than upfront perfection. Key principles include embracing change, maintaining stability through resilience, and ensuring modifications don't break existing functionality.

The Cost of Code That Doesn't Belong

Code integration quality matters more than origin, whether human-written or AI-generated. Successful systems require contextual awareness, dialect alignment, and careful bridging between raw output and cohesive implementation.

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.