Building open source AI tools for Ruby. https://xitter.cf/t.co/TDaRrAp2B9 | https://xitter.cf/t.co/z6EMxT1nQP | discord: https://xitter.cf/t.co/P3ZnImpqYZ

Joined June 2022
Refactoring is an important tool in your toolbox for effectively managing your AI agent's context window, but it feels a lot different than it did in the past (a year ago). Just wrote up some thoughts on my newsletter about what Refactoring means when AI agents are able to write good, working code so fast. (link in next tweet)
2
2
16
65,480
A bunch of people have asked me how I was able to vibe code Protocollie in 4 days with Claude Code, so I wrote up some thoughts about the system and how it evolved.
1
6
8
730
Linus Torvalds once said "with enough eyes, all bugs are shallow." But he was thinking too small. With enough AIs, all software is shallow. I’ve been doing a lot of vibe coding lately and just wrote up some thoughts about the implications on my substack.
1
1
1
259
MCP: An (Accidentally) Universal Plugin System. Everyone keeps saying AI will bring the "personalization era" of software, but handwaving whenever it comes to "how". If MCP is a USB-C port like they say, you don't even need AI in the loop, you just have a universal plugin system for all software. I wrote up a little piece explaining how I'm thinking about MCP, why it's even bigger than the hype it's currently getting, and sharing a little bit about something we're building. Link to post below:
4
5
1
22
3,009
The 9th edition of Ruby AI News is live! This edition features an entire Obie Fernandez AI newsletter, awesome new Active Agent docs, Rapid Ruby inspiring the next generation of Ruby AI developers, and much more. Link below 🔻
2
5
1
24
2,792
🚨 New on The Ruby AI Podcast: “Sublayer & Artificial Ruby” with @scottwernerd A deep dive into LLM-native architectures, code synthesis, and the dream of an AI-powered Ruby DSL where engineering meets imagination. 🎧 Listen now: therubyaipodcast.com/2388930… #TheRubyAIPodcast #RubyAI
1
4
5
433
Wasting Inferences: Auto-Fixing Bugs with an LLM Swarm (for < 10¢!) Steve Yegge's "Revenge of the Junior Developer" predicts Agent Clusters/Fleets emerging around 2026. But what if we could experiment with that core idea today? This week on "Works on My Machine," I explore automating bug fixes directly from Asana using multiple LLMs simultaneously via Aider. The demo shows a workflow where assigning an Asana task triggers a Sublayer agent. This agent then scripts the Aider coding agent, instructing it to fix the reported bug using GPT-4o, Claude 3.5 Sonnet, and Gemini 2.0 Flash – generating three separate PRs for the same task. Key Takeaways: ➡️ Agent Clusters Now: While not deeply coordinated, basic agent workflows tackling coding tasks are feasible today. ➡️ Cheap Redundancy: "Wasting inferences" across these 3 powerful LLMs cost less than $0.10 for this bug fix! Makes parallel attempts viable. ➡️ Compare & Contrast: Automatically get multiple potential fixes and compare different implementation approaches generated by different models. ➡️ True Automation: Move beyond manually prompting agents via chat; trigger complex coding workflows directly from project management tools like Asana. Watch the full demo video showing the setup and results, and read the breakdown (including specific costs & code links) on this week's Substack post (link in next tweet)
1
7
10
627
Introducing Monkey's Paw 🐒✋ – a prompt-driven web framework in Ruby where your page descriptions are the source code. You write your wishes in markdown files in your wishes folder, and an LLM grants them... exactly as you state them. This is the first release in the "Works on Your Machine" category on my newsletter (link in comments!): sharing experiments that have graduated beyond just my local setup. It grew out of my RubyConf talk "Going Postel" and the idea that "Hallucinations are a Feature, not a Bug." - What if we embrace the weirdness and build systems that accept AI's output, rather than fighting for perfect structure? What Monkey's Paw does: 📝 Translates .md prompt files ("wishes") into full web pages. ✨ Uses an LLM to generate the HTML, CSS, and even attempt the JS based on your descriptions. ⚠️ Comes with the classic Monkey's Paw warning: Be careful what you wish for... Performance and precision are sacrificed at the altar of expression! It's less about perfect control, more about exploring what happens when natural language is the program. Think of it as the "yes, and..." improv approach to web frameworks. It's now available as a Ruby gem! Find the code on GitHub (sublayerapp/monkeyspaw) and read the full origin story, see examples (including the prompt that generated its own homepage!), and understand the why behind this experiment on my Substack. Would love to see what beautiful (or terrifying) things you create if you give it a spin!
2
4
14
1,545
Polymorphism is a Force Multiplier for AI: Your code is your prompt Last week, we looked at bridging "vibe coding" with product processes. This week on "Works on My Machine," we tackle a related challenge: how do you get AI to continue generating code as your codebase scales? The answer lies in polymorphism and thinking about your code's structure itself as the prompt. In the video, I demonstrate how the sublayer gem leverages this for powerful, scalable AI code generation. Key takeaways: ➡️ Consistent Interfaces: Polymorphism provides the repeatable patterns LLMs excel at replicating. ➡️ AI Gets Better With More Code: Architecting your code this way offers "returns to scale" – more components = more examples for better AI generation for that component type. ➡️ Focus the AI: Avoid overwhelming the LLM by having it generate small, well-defined, loosely coupled components. ➡️ Practical Example: Generating a new Generator in Ruby using the Sublayer CLI. Check out the demo video here and read a more detailed explanation of how something like this offers "returns to scale" on the Substack post (link in bio). Curious to hear if anyone has found similar patterns or even discovered this themselves as well!
2
10
529
A Vibe-code to User Stories Pipeline using Bolt, Cucumber, and Asana Intrigued by "Vibe Coding" but put off by the idea of just letting the AI loose to build software? In my latest "Works on My Machine" video, I delve into a experiment using @boltdotnew, @grok, Cucumber, and @asana to try to get the best of both worlds: the speed of fully-AI driven software development with the stability and reliability of a tried and true product process. This week, I explore: Lightning-Fast Prototyping: See how "Vibe Coding" can dramatically speed up the journey from idea to interactive prototype. AI as a "Representation Converter": How AI can seamlessly translate your ideas between design docs, prototypes, feature files, and even user stories. Bridging "Vibe Coding" & Traditional Product Processes: Can we combine the speed of AI prototyping with more structured workflows? Want to see this in action? Check out the video or grab the code from my newsletter and try it yourself!
1
5
721
Const_missing and AI: A Ruby Metaprogramming Experiment Intrigued by the idea of AI-powered metaprogramming? In my latest "Works on My Machine" video (ubstack link in bio!), I delve into a wild Ruby experiment: using const_missing and caller_locations to get an LLM to generate code based directly on how I name my classes and variables. Think of it: design your interface with descriptive names, and let AI fill in the implementation gaps! It's a rough demo, but shows another way that our code itself can be thought of as a prompt for AI code generation. This week, I explore: Code as Context: How descriptive naming transforms your code into a meta-tool for AI guidance. Ruby Metaprogramming + LLMs: What are some uniquely Ruby ways that we can use LLMs in our code? Multi-Pass Code Generation: Ok so it's only a single pass right now, but...moving closer to "just-in-time software" through layered AI code generation. Want to see it in action (and maybe even try the code)? Check out the video here, the link to the code is available on the substack.
1
3
11
1,158
Could @KentBeck's "test && commit || revert" process (TCR) be a powerful method for learning how to program with AI? In my new "Works on My Machine" video (newsletter link in bio!), I demo an agent I built to follow the TCR process where I write the tests and an LLM generates the code. If the generated code makes the tests fail, we revert and start over. If they pass, we generate a commit message and move forward. I've found it to be a great way to start to build an intuition for how small of a change I need to make to have a high success rate with LLM generated code and how to describe a problem through tests to make sure that small change is what I'm looking for. (If you've ping pong paired, it does sometimes just hardcode the return value into the function ;)) Not only that, but it has also helped me really internalize the idea that tests are an executable specification of what you want your program to do that you can treat as an "executable prompt". I feel like this is a very powerful idea that could lead to testing DSLs like Cucumber/Gherkin seeing a resurgence... I'm going to be live streaming a longer version of it March 9th around 3pm ET and I'll share a link if anyone wants to join and chat while it's going on (or see the recording afterward!). The code for the tcr agent is also open source so if you get a chance to try it out, I'd love to hear how it goes!
1
2
7
580
Tonight at 5:30PM EST, I'll be joined by @thedayisntgray and @jleo3 to launch the start of The Ruby AI Podcast. In this very special first episode, we'll be broadcasting live from the first ever Artificial Ruby NYC event! Stay tuned, a link will surface here once things start.
1
5
9
1,726
AI programs while I sleep (and I'm drowning in PRs) Ever dreamed of having AI contribute to your codebase while you sleep? A while back I decided to experiment with exactly that for our open-source @sublayerapp gem, and the results are...prolific (to say the least!) In my latest "Works on My Machine" demo video (newsletter link in my profile!), I show how I set up a @github Actions workflow that leverages Gemini 2.0 Flash, GPT-4o, and Claude Sonnet to automatically: 1) Suggest and generate new Sublayer Actions (tool integrations). 2) Create code for these Actions over night. 3) Open Pull Requests directly on GitHub. The video shows the workflows in action and the sheer volume of PRs it generates. It raises a critical question: Are we ready for AI to generate tasks faster than humans can review them? While AI code generation offers incredible productivity gains, this experiment highlights a potential "human review bottleneck" in knowledge work. Is our current tooling designed for human-scale review, or do we need to rethink our workflows and interfaces for the age of AI-driven code contribution? Check out the video for a demo and get the code at sublayerapp/sublayer_actions. Would love to hear your thoughts either on the video or the broader implications of having AI create work for you while you sleep...
3
5
503
Fanout / Parallelize / Reduce Refactoring with Asana, GitHub, Sublayer, and Gemini 2.0 Flash
1
2
3
328
Automating Test Generation from a JIRA story with Gemini 1.5 Pro, GitHub Actions, and the @sublayerapp gem!
2
1
6
525
@thecodenamev presenting his rubylang.ai fine-tuning libraries. He points out that LLM are generally better at generating other languages than Ruby. Fine-tuning can help LLM get better Ruby.
1
2
1
10
686
What a great event 😊 Thank you @heyheyitsRP @scottwernerd and @sublayerapp for continuing to drive the #Ruby AI scene in NYC! Getting ready for the future: artificialruby.ai
Replying to @rushing_andrei
@thecodenamev presenting his rubylang.ai fine-tuning libraries. He points out that LLM are generally better at generating other languages than Ruby. Fine-tuning can help LLM get better Ruby.
2
7
305
Was just able to make my first calls to Gemini using Unit, an interactive visual programming system by @io_sammt! Now to make this a bit more reusable and try to combine it with some of the ideas from our @sublayerapp rubygem...
1
2
5
486