No breaks

My girlfriend and I moved into a new home this weekend. I have a tendency to procrastinate packing until the last few days every time I move. Not my favorite activity. This week there was an ice storm, the city of Nashville froze and many lost power. Fortunately I was one of the few I spoke to that had power and internet throughout. Packing would have been even more challenging freezing in the dark.

Friday - Packing is painful

While packing I was thinking about how to stay on top of ai tooling for coding and seeing if I could identify any gaps I could fill. I reengaged with my x account because it may be the most current place to hear people speaking about the latest tech. I found x supports video podcasts and I immediately found new content.

Eventually I found myself instructing Claude on the computer, listening to Anthropic’s ‘Natural emergent misalignment from reward hacking in production RL’ video and packing in between. I was able to follow a number of new people posting about Claude. It is awesome to be able to follow people directly involved - Boris Cherny especially. A list of tips while using Claude - here

I was asleep after midnight and up by 5 to disassemble my standing desk, bed, and finish up final packing before the movers arrived at 10.

Saturday - Frozen house plants

We spent the whole day unpacking and then fell asleep early after finishing the day with Chick-fil-A. No time for Claude. We did learn that house plants can die in super quickly in cold temperatures.

Sunday - Catch up

On Sunday I met online with a colleague and friend who is working on a new startup and is an avid Claude user. I did not know this until we reconnected. I love speaking to people who are excited about taking advantage of the latest tools to build software. In my last blog I mentioned multitasking between 2 Claude instances and thought giving attention to more might have diminishing returns.

Turns out he was running 6 Claude instances and using git tokens and API keys to take advantage of different platforms while automating bug fixes and having an agent make code changes in response to PR comments.

Time used to be the most valuable currency... Now it is attention and discernment

We crossed the topic of observability and discussed ideas around using Claude to receive production alerts, inspect logs, investigate the code, and make a pull request for review before the on-call dev sees their notification.

This connects us to MCP. Interestingly the concept was a little fuzzy to me for a while but once simplified it made sense.

My translation: a protocol defining how agents connect to servers that expose tools for external services like GitHub, AWS, etc.

I had Claude draw us a diagram of an implementation

┌─────────────────────────────────────────────────────────────────────────────┐
│                              CLAUDE CODE                                    │
│                                                                             │
│   "Alert firing on payment-service - check logs and find the bug"           │
│                                                                             │
└─────────────────────────────────┬───────────────────────────────────────────┘
                                  │
                                  │ MCP Protocol
                                  │
        ┌─────────────────────────┼─────────────────────────┐
        │                         │                         │
        ▼                         ▼                         ▼
┌───────────────┐       ┌─────────────────┐       ┌─────────────────┐
│  AWS Alerts   │       │   CloudWatch    │       │     GitHub      │
│  MCP Server   │       │   MCP Server    │       │   MCP Server    │
├───────────────┤       ├─────────────────┤       ├─────────────────┤
│               │       │                 │       │                 │
│ • list_alerts │       │ • get_logs      │       │ • search_code   │
│ • get_alert   │       │ • query_metrics │       │ • get_file      │
│ • ack_alert   │       │ • get_traces    │       │ • list_commits  │
│               │       │                 │       │                 │
└───────┬───────┘       └────────┬────────┘       └────────┬────────┘
        │                        │                         │
        ▼                        ▼                         ▼
┌───────────────┐       ┌─────────────────┐       ┌─────────────────┐
│    AWS SNS    │       │ AWS CloudWatch  │       │   GitHub API    │
│  EventBridge  │       │     Logs        │       │                 │
└───────────────┘       └─────────────────┘       └─────────────────┘


═══════════════════════════════════════════════════════════════════════════════
                              EXAMPLE FLOW
═══════════════════════════════════════════════════════════════════════════════

  1. Alert Fires
     ─────────────────────────────────────────────────────────────────────
     AWS SNS ──► MCP Server ──► Claude sees: "5xx errors spiking on
                                             payment-service (us-east-1)"

  2. Claude Fetches Logs
     ─────────────────────────────────────────────────────────────────────
     Claude ──► CloudWatch MCP ──► "ERROR: NullPointerException in
                                    PaymentProcessor.java:142"

  3. Claude Inspects Code
     ─────────────────────────────────────────────────────────────────────
     Claude ──► GitHub MCP ──► Reads PaymentProcessor.java
                          ──► Checks recent commits
                          ──► Finds: "commit abc123 removed null check"

  4. Claude Reports
     ─────────────────────────────────────────────────────────────────────
     "The alert is caused by commit abc123 which removed a null check
      on line 142. Here's a fix: ..."

You'd register each server:

claude mcp add --transport stdio aws-alerts -- node ./aws-alerts-mcp.js
claude mcp add --transport stdio cloudwatch -- node ./cloudwatch-mcp.js
claude mcp add --transport http github https://api.githubcopilot.com/mcp/

Then just ask: "What's firing? Figure out why and suggest a fix."

The well is deep.

When thinking about the complexity of large systems I have some doubt Claude would be a superstar at fixing production issues with the above setup due to missing pieces of information often tied in sources Claude may not have access to. Additionally human generated code has nuances and interwoven tribal knowledge that could prove problematic to finding the solution. If one started a project from scratch and planned for this type of system with appropriate AI documentation, then maybe they could keep things on track. Easier said than done though. As a system increases in size, orchestrating all of this becomes increasingly challenging. We will need to become great technical planners.

The loop is there. How can we strengthen the loop as the models spinning on it get better and better.

I learned we can recall previous context windows via Claude.

Compact context command

/compact - Clear conversation history but keep a summary in context. Optional: /compact [instructions for summarization]

Recall context commands

- claude --continue or claude -c - Continues the most recent conversation without prompting
- claude --resume "search term" - Filters sessions by a search term

Good night

This was a fun reflection. Glad the move is over and we are settled. It is always great to catch up with a friend.

Cheers!

Thinking about Ai Tooling