MCP Embedded Resources for Slack: Work Objects, Block Kit, and Silent Failures

Slack’s API returned 200 OK but silently dropped my Work Objects. Two gotchas cost me hours: wrong metadata structure and a missing alt_text field. Here’s the debugging story and the channel-specific embedded resources pattern that emerged.

December 12, 2025 · 7 min · Rida Al Barazi

Kamal + 1Password + GitHub Actions: Production Deployment Pipeline

It was 11pm on a Friday. Deploy failed. Missing environment variable. After twenty minutes of debugging, I found it: I’d added a secret to CI but forgot to add it to the server. Two-minute fix, twenty-minute hunt. I’d been burned enough times to finally fix this properly. The Core Insight One source of truth for production secrets. 1Password holds the secrets. Kamal fetches them. GitHub Actions triggers the deploy. No scattered env files on servers, no secrets in CI config. ...

December 10, 2025 · 6 min · Rida Al Barazi

Fixing DevContainer Build Failures on Debian Trixie

While updating my Rails devcontainer to use the latest Ruby 3.4 image, I hit two cryptic build failures on Debian Trixie. If you’re running into similar DevContainer build errors, these fixes will save you some debugging time. The Errors Error 1: APT Hash Sum Mismatch E: Failed to fetch .../libdav1d7_1.5.1-1_arm64.deb Hash Sum mismatch E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing? Error 2: Moby Package Not Found (!) The 'moby' option is not supported on Debian 'trixie' because 'moby-cli' and related system packages have been removed from that distribution. The Fixes Fix 1: Reorder APT Commands in Dockerfile Before (broken): ...

December 8, 2025 · 2 min · Rida Al Barazi

Rendering MCP Tool Results as ChatKit Widgets in Rails

OpenAI’s ChatKit has a Python SDK. I’m using Rails. Here’s how I bridged MCP tool results to ChatKit widgets, with architecture decisions, extraction logic, and lessons from letting AI agents write most of the code.

December 7, 2025 · 9 min · Rida Al Barazi

Building Review Apps with Kamal and GitHub Actions

Building Review Apps with Kamal and GitHub Actions When I was using Heroku at work, one feature stood out as a game-changer for our development workflow: Review Apps. They made pull request testing seamless—isolated environments spun up automatically, inherited configuration from staging, and even provisioned separate add-ons like PostgreSQL and Redis. It transformed how we collaborated and tested changes. Fast forward to today. I’m running my Agentify app on a Hetzner server using Kamal for deployment. Everything is containerized with Docker—from local development with devcontainers and ngrok for tunneling, to production deployment on my Hetzner box. As I dove deeper into agentic coding, I found myself wishing for that same pull request workflow. I wanted to test changes in isolation, share environments with others, and validate features before merging. ...

August 5, 2025 · 6 min · Rida Al Barazi

How to Implement Model Context Protocol (MCP) in Rails: 3 Approaches

When I started building Agentify, I took the straightforward path: hardcode the tool integrations directly into my Rails application. Need weather data? Write a method that calls the weather API. Need to search knowledge bases? Build it into the agent logic. It worked, but it wasn’t sustainable. Then the Model Context Protocol (MCP) standard emerged, promising a way to standardize tool interactions between AI agents and external services. Instead of building every integration myself, I could tap into a growing ecosystem of MCP servers. The question was: how do you actually implement this in a real Rails application? ...

May 29, 2025 · 8 min · Rida Al Barazi