RSSAmplifier

Blog

Closer to Code

Blog about coding in various languages, security, and my other IT adventures.

mensfeld.plRSS feed ↗16 posts

Latest posts

Ruby and Rails Performance Roundup: The Backlog Edition

Byroot, k0kubun, and ko1 headline a Ruby and Rails performance roundup with real benchmark numbers: ZJIT, GC, strings, JSON, and more. The post Ruby and Rails Performance Roundup: The Backlog Edition appeared first on Closer to Code .

Karafka 2.6 and Web UI 1.0: Laying the Groundwork for Kafka Queues

I'm happy to announce that Karafka 2.6 and Karafka Web UI 1.0 have just been released. For those new here: Karafka is a Ruby and Rails multi-threaded, efficient Kafka processing framework, and its Web UI is a monitoring and management dashboard that ships alongside it. As with every release in the 2.x line, this is [ ] The post Karafka 2.6 and Web UI 1.0: Laying the Groundwork for Kafka Queues…

Small PRs, big speedups: The Ruby performance work you almost missed

Normally I just fire off a tweet when I spot a nice performance PR landing in Ruby. Lately I've been catching up on a backlog of Ruby performance work I'd bookmarked and never gotten around to - so some of what's below isn't brand new, with a few PRs dating back to 2025. There were [ ] The post Small PRs, big speedups: The Ruby performance work you almost missed appeared first on Closer to Code .

From Karafka Ractors to Yoichi Whisky: My RubyKaigi 2026 Experience

Introduction I just returned from RubyKaigi 2026, held from April 22nd to 24th in Hakodate, Hokkaido. For those unfamiliar with it, RubyKaigi is the biggest Ruby conference in the world, drawing speakers, committers, and Rubyists from across the globe. As always, it managed to combine deep technical talks with a uniquely Japanese atmosphere that no [ ] The post From Karafka Ractors to Yoichi…

One Thread to Poll Them All: How a Single Pipe Made WaterDrop 50% Faster

This is Part 2 of the 'Karafka to Async Journey' series. Part 1 covered WaterDrop's integration with Ruby's async ecosystem and how fibers can yield during Kafka dispatches. This article covers another improvement in this area: migration of the producer polling engine to file descriptor-based polling. When I released WaterDrop's async/fiber support in September 2025, [ ] The post One Thread to…

Claude on Incus – All the autonomy, securely

Here's claude-on-incus (or coi for short) - a tool for running Claude Code freely in isolated Incus containers. If it's useful to you, a star helps. Note: I'm also working on 'code-on-incus' - a generalized version for running any AI coding assistant in isolated containers. Why? Three reasons: security, a clean host, and full contextual [ ] The post Claude on Incus All the autonomy, securely…

Shoryuken Has a New Maintainer, and v7.0.0 Is Almost There

After a decade under Pablo Cantero's stewardship, Shoryuken has a new maintainer - me. I'm grateful for his graceful handoff of this Ruby SQS library, and I'm picking up where he left off: v7.0.0.rc1 is out now, with the stable release close behind. What's in v7.0.0 This release modernizes the codebase substantially. It brings several [ ] The post Shoryuken Has a New Maintainer, and v7.0.0 Is…

Ruby Floats: When 2.6x Faster Is Actually Slower (and Then Faster Again)

Update: This article originally concluded that Eisel-Lemire wasn't worth it for Ruby. I was wrong. After revisiting the problem, I found a way to make it work - and submitted a PR to Ruby. Read the full update at the end. Recently, I submitted a PR to Ruby that optimizes Float#to_s using the Ryu algorithm, [ ] The post Ruby Floats: When 2.6x Faster Is Actually Slower (and Then Faster Again)…

Announcing YARD-Lint: Keep Your Ruby Documentation Solid

TL;DR: YARD-Lint catches documentation issues, just like RuboCop for code. Star it and use it now. I am happy to announce the release of YARD-Lint, a comprehensive linter designed for YARD documentation in Ruby and Rails projects. This gem is now available as open-source. # In your Gemfile gem yard-lint For those who are not [ ] The post Announcing YARD-Lint: Keep Your Ruby Documentation Solid…

When Your Hash Becomes a String: Hunting Ruby’s Million-to-One Memory Bug

Every developer who maintains Ruby gems knows that sinking feeling when a user reports an error that shouldn't be possible. Not 'difficult to reproduce', but truly impossible according to everything you know about how your code works. That's exactly what hit me when Karafka user's error tracker logged 2,700 identical errors in a single incident: [ ] The post When Your Hash Becomes a String:…

Announcing llm-docs-builder: An Open Source Tool for Making Documentation AI-Friendly

I am excited to announce the release of llm-docs-builder, a library that transforms Markdown documentation into an AI-optimized format for Large Language Models. TL;DR: Open source tool that strips 85-95% of noise from documentation for AI systems. Transforms Markdown, generates llms.txt indexes, and serves optimized docs to AI crawlers automatically. Reduces RAG costs significantly. ⭐ [ ] The…

When Responsibility and Power Collide: Lessons from the RubyGems Crisis

The Ruby community experienced significant turbulence in September 2025 when Ruby Central forcibly took control of the RubyGems GitHub organization, removing long-standing maintainers without warning. As someone who has worked extensively on RubyGems security - first independently and later with Mend.io - protecting our ecosystem from supply chain attacks and handling vulnerability reports, I…

WaterDrop Meets Ruby’s Async Ecosystem: Lightweight Concurrency Done Right

Ruby developers have faced an uncomfortable truth for years: when you need to talk to external systems like Kafka, you're going to block. Sure, you could reach for heavyweight solutions like EventMachine, Celluloid, or spawn additional threads, but each comes with its own complexity tax. EventMachine forces you into callback hell. Threading introduces race conditions [ ] The post WaterDrop Meets…

Past, Present, Future, and Brotherly Love: My Final RailsConf Journey

A few weeks have passed since RailsConf 2025, which was running from July 8th to 10th in Philadelphia, PA, and I've had time to process what was my first (and last) RailsConf experience. It wasn't just any RailsConf – it was the final edition after nearly 20 years of bringing together the Rails community. There's [ ] The post Past, Present, Future, and Brotherly Love: My Final RailsConf Journey…

Announcing Passive Queue: The Rails Background Job System That Transcends Processing

0ms processing time. Infinite scalability. 100% success rate. Zero failures. ← Give it a star if you enjoyed this zen approach! The Moment of Zen Clarity It was Day Two of RailsConf 2025 in sweltering Philadelphia when the idea crystallized. My friend Justin and I were discussing the endless cycle of Rails optimization - everyone [ ] The post Announcing Passive Queue: The Rails Background Job…

The 60-Second Wait: How I Spent Months Solving the Ruby’s Most Annoying Gem Installation Problem

Notice: While native extensions for rdkafka have been extensively tested and are no longer experimental, they may not work in all environments or configurations. If you find any issues with the precompiled extensions, please report them immediately and they will be resolved. Every Ruby developer knows this excruciating feeling: you're setting up a project, running [ ] The post The 60-Second Wait:…