# Blogs

Canonical URL: https://rida.me/blog/


## Pages
- [Why I finally tried OpenClaw (and how I'm making it safe)](https://rida.me/blog/why-i-finally-tried-openclaw/index.md): I avoided running agents with real access for a year. The unlock wasn't better models or tighter sandboxes. It was giving the agent its own identity.
- [MCP Embedded Resources for Slack: Work Objects, Block Kit, and Silent Failures](https://rida.me/blog/mcp-embedded-resources-slack-work-objects-block-kit/index.md): Building multi-channel AI agents means dealing with APIs that silently fail. Slack returned 200 OK while dropping my Work Objects. Here's what went wrong and the pattern that emerged.
- [Kamal + 1Password + GitHub Actions: Production Deployment Pipeline](https://rida.me/blog/kamal-1password-cicd-deployment/index.md): Set up automated Kamal deployments with 1Password secrets management. The same .kamal/secrets file works for manual deploys and GitHub Actions CI/CD.
- [Fixing DevContainer Build Failures on Debian Trixie](https://rida.me/blog/fixing-devcontainer-build-failures-debian-trixie/index.md): Two quick fixes for cryptic APT hash mismatches and missing moby packages when building devcontainers on Debian Trixie.
- [The Agent Ran My Manual Tests](https://rida.me/blog/the-agent-ran-my-manual-tests/index.md): Give your coding agent a browser and a markdown script. With Playwright MCP, the agent can verify its own work end-to-end—no human clicking required.
- [Rendering MCP Tool Results as ChatKit Widgets in Rails](https://rida.me/blog/chatkit-mcp-widgets-rails/index.md): Step-by-step guide to rendering OpenAI ChatKit MCP tool results as rich UI widgets in a Ruby on Rails app using server-side hydration and SSE streaming.
- [Setting Agents Up to Succeed](https://rida.me/blog/setting-agents-up-to-succeed/index.md): The difference between good and bad AI coding sessions isn't the model. It's what you give the agent before it starts.
- [What Makes an App AI-Native?](https://rida.me/blog/what-makes-an-app-ai-native/index.md): AI-native apps aren't about having AI features. They're about control transfer: how control flows between user and agent as work progresses from intent to output.
- [MCP's Auth Problem](https://rida.me/blog/mcp-auth-problem/index.md): The MCP spec expects oauth at connect time, before you know what tools you need. Here's the chicken-and-egg problem I hit and the workaround I landed on.
- [YOLO Mode Only Works When YOLO Can't Hurt You](https://rida.me/blog/yolo-mode/index.md): What I learned from 12 months of coding with AI agents—and why I built isolated dev environments to make them actually useful.
- [Building Review Apps with Kamal and GitHub Actions](https://rida.me/blog/kamal-github-review-apps/index.md): A deep dive into implementing preview environments for pull requests using Kamal deployment, PostgreSQL schema isolation, and GitHub Actions automation.
- [How to Implement Model Context Protocol (MCP) in Rails: 3 Approaches](https://rida.me/blog/building-with-mcp/index.md): A deep dive into implementing Model Context Protocol (MCP) servers in a Rails application, covering remote HTTP, native Ruby, and Docker subprocess approaches.
- [What I Learned This Week: 12-Factor Agents, Prompt Security, and Voice Interfaces](https://rida.me/blog/what-i-learned-this-week-2025-05-09/index.md): This week's learning log covers HumanLayer's 12-Factor Agent patterns, layered prompt injection defenses, and the architecture behind production-ready voice interfaces.
- [How ChatGPT Helped Me Find the Right Running Shoes](https://rida.me/blog/how-chatgpt-helped-me-find-the-right-running-shoes/index.md): A story about how I figured out my running shoes with the help of AI after struggling with knee pain and bad advice.
- [Returning to the Blank Page](https://rida.me/blog/returning-to-the-blank-page/index.md)
