
Founder @clovingai • I am obsessed with writing better code faster with AI
San Diego, CA
Joined February 2007
- Tweets49
- Following14
- Followers4.4K
- Likes16.3K
Most “durable” state I see is a row lock, a Redis key, and a cron that sometimes runs.
That is three systems for one shopping cart.
Two Ruby gems that predate Rails 1.0 just got their biggest updates in 20 years.
Combined downloads: 3+ million
First releases: 2005
Still zero bloat.
Here's what's new 🧵
The simple-rss gem now includes:
• Built-in URL fetching with ETags & Last-Modified
• JSON/XML serialization (to_json, to_hash, to_xml)
• Enumerable support (each, map, select)
• Array tags for categories & enclosures
• UTF-8 normalization
Zero. Dependencies.
Both gems now require Ruby 3.1+ with full test suites and GitHub Actions CI.
20 years of stability. Modernized for 2025.
Give them a star if you appreciate long-lived open source:
→ github.com/cardmagic/classif…
→ github.com/cardmagic/simple-…
#ruby #opensource #programming
Can't get AI codegen working with #RubyOnRails? You might just be missing the right guardrails.
Here are 6 guardrails for Rails to pro-actively catch AI-generated bugs in before they hit production... how many of these are you doing?
1) Run Brakeman static scan. Rails pitfalls surface long before deploys.
• Install the brakeman gem
• Run `brakeman -Aq` in CI
• Fail build on high warnings
Proactive scanning beats post-mortems; guard rails keep you coding, not firefighting.
2) Audit Gemfile dependencies. Hidden CVEs sink startups quickly.
• Install the bundler-audit gem
• Run `bundle audit --update` in CI
• Block gems with CVSS ≥7
You should always be guarding your supply chains.
3) Enforce RSpec coverage gate. Unchecked AI code hides silent paths.
• Run SimpleCov in CI
• Fail PRs under 90% branches
• Track the trend badge in your README
Metrics drive discipline; high bars forge stable features.
4) Activate Sorbet strict typing. Null errors vanish before users see them.
• Add Sorbet gems
• Run tapioca init sigs
• Set typed: strict gradually
• Fail CI on unresolved types
• Auto-refactor AI output
Using strict typing helped me get my AI codegen proactively catching at least 2x as many bugs than without it.
5) Guard DB migrations safety. Unchecked AI can nuke your data.
• Add strong_migrations gem
• Run checks pre-merge
• Batch backfills in jobs
• Verify change_column_null online
• Block unsafe renames
Safe migrations protect uptime; calm dashboards build product trust.
6) Monitor runtime contracts. Catch anomalies early.
• Use ActiveSupport::Notifications hooks to send a notice when your runtime contract error rate breaches your threshold
• Alert error rates >0.5 %
• Auto-open bugs in Jira/Asana/Trello
• Roll back via feature flags, check out the flipper gem
Fast feedback beats outages; minor blips cost less.
Today I felt like having AI give me a psychic reading based on all the books I've ever listened to on Audible. But you can't just download a list of books. So I had to use AI to help me. Read the full thread 🧵 to see how I did it.
(I included the psychic reading in thread #6)
8/ "... You are a dreamer and a doer, someone who is constantly seeking to understand the world and your place in it."
Pretty accurate reading I'd say. I'm satisfied.
I hope you've found this thread helpful.
If you want to build something like that with @clovingai let me know how it goes and what you come up with.
Like/Repost the quote below if you can:
Today I felt like having AI give me a psychic reading based on all the books I've ever listened to on Audible. But you can't just download a list of books. So I had to use AI to help me. Read the full thread 🧵 to see how I did it.
(I included the psychic reading in thread #6)
🚀 Exciting news! Cloving 0.3.10 is here! 🎉
🔹 v0.3.10: Added Azure OpenAI support
🔹 v0.3.9: Enhanced string utility functions
🔹 v0.3.8: Refactored diff parsing logic
Check out the full changelog and updates: github.com/cloving-ai/clovin…




