Operations 26w35

monkey-id
Operations 26w35

This session is for operational work during this week. Address (monkey-task-context) items directly, one subheading in the NOTE is for one item.

Fix mapping-pipeline deployment due to SSM parameter

https://github.com/FindHotel/mapping-pipeline/actions/runs/32779045038/job/97599196109

Fix Dependabot failure in content-pipeline

https://github.com/FindHotel/content-pipeline/actions/runs/32709801786/job/97378566903

Fix content-pipeline deployment due to SSM parameter

Same as above for mapping-pipeline.

This parameter should not be used, part of Migrate Content system to Keypair auth in Snowflake. Check that it is not in use and remove the whole parameter.

Remove pagerduty SSM parameters from mapping-pipeline
wt
(◊git-status "~/.wt/mapping-pipeline_remove-pagerduty-parameters")
PR
Remove unused SSM parameters ⋅ mapping-pipeline#2070
AWS_PROFILE=fh-meta AWS_REGION=eu-west-1 \
aws ssm describe-parameters --page-size 50 | gron | grep Name | grep sovitin | grep pagerduty
Remove cms-update-hotel

With migration to OPUS, (◊grep 'content-pipeline "cms-update-hotel") is probably no longer needed - it calls Hotel API for hotel content.

Check in the ~/.vio/OPUS repository.

If confirmed, cleanup content-pipeline and mapping-pipeline repos.

PR has been merged, deploy on staging envornment, and monitor production deployment.

CONTENT-4186 Fix img-proxy source image fetch timeoutsCase
related
ImgProxy

Redeployed obfuscated-proxy v1.4.0, check if that fixed. No.

CONTENT-2793 agd_duplicated_hotel_feedback expiredCase PR

The PR mapping-pipeline#1981 was closed due to stalliness. Need to address comments and merge it.

CONTENT-2793 - mapping-prod, AGD feedback CSV

  • Root cause (10th confirmation): bucket-wide 180-day S3 lifecycle rule expired agd_duplicated_hotel_feedback/latest.csv. Mitigated 2026-06-10; last 12 runs SUCCEEDED.
  • Still open: lifecycle rule unscoped, loader unhardened. Hard deadline 2026-12-07 — file expires again.
  • Recommend: close as mitigated, stop recurring re-checks, file follow-up before deadline. Owner ping to hguo@vio.com unanswered since 06-15.
Remove ECS infrastructure from obfuscated-proxy

Obfuscated Proxy was migrated to EKS, old ECS IaC is not relevant. Cleanup.

Monitor if upgrade to Spark 4 works
Cleanup usage of content.interface.placeStory
use role content_dbt_prod;
use schema content.content_prod;
alter table content.content_prod.place rename to place_hco;
create view content.content_prod.place as select * from content.content_prod.place_spark;

Content Squad announcement:

  • Old content.content_prod.place table (HCO-based) has been renamed and considered private
  • content.content_prod.place now a view over production-ready table developed within PI: Better Geographic UX | Notion.

Daisy' (Anthropic Claude Code engineer) workflow

On <2026-08-23 Sun> I read in stumbled on this post - Anthropic: Please Have Daisy the CC Engineer Do a Video! : r/ClaudeAI.

In this week's newsletter, Anthropic included this:

"My daily driver currently looks like: two lead agents that keep each other accountable and restart the other if either fails. These delegate to tech lead or PM agents for the 8-10 projects I'm running at any one time, and each project has 5-10 IC [individual contributor] agents, generalists or specialists depending on the problem. Across all of these I'm still only doing 30-50 prompts per day, and my IC agents typically work autonomously for 2-3 days. About 60% of my interaction is with the leads, 35% with a project lead, and 5% is when something has gone off the rails. All of these agents communicate directly with the SendMessage tool."

– Daisy, Engineer on Claude Code

Turning it into mindmap:

                                      ╭─ keep each other accountable
                   ╭─ two lead agents ┼─ restart the other if either fails
                   │                  ╰─ delegate to ┬─ tech lead ── 8-10 projects...
                   │                                 ╰─ PM agents
                   │                                                 ╭─ . ┬─ generalists
« Daisy workflow » ┼─ 8-10 projects ── per project ── 5-10 IC agents ┤    ╰─ specialists
                   │                                                 ╰─ work autonomously ── for 2-3 days
                   │                        ╭─ 60% with leads
                   ├─ 30-50 prompts per day ┼─ 35% with project lead
                   │                        ╰─ 5% off rails
                   ╰─ agents communicate ── SendMessage tool

My thoughts:

Why two lead agents? Likely they both run "/loop 30m check projects" with offset, so one is checking status while another is ready for communication. This is where "60% with leads" coming from; sometimes they both are checking, and Daisy goes to project leads directly. Those two leads have permanent session names and never closing.

8-10 projects. I also have about the same number of big topics a week, often carried to other weeks. So this sounds like the right amount of parallelism. Also keeping 8-10 projects on track is within cognitive abilities of an average human.

Beyond the basics with Claude CodeYouTube

Comments lead to this video:

YT
Beyond the basics with Claude Code - YouTube
author
Daisy Hollman
date
<2026-05-22 Fri>

It breaks down to this mindmap:

                                          ╭─ Slack
                 ╭─ where work comes from ┼─ CI/CD ── no point to fix CI/CD manually
                 │                        ├─ Dashboards
                 │                        ╰─ Internal Docs
                 ├─ tip ── try doing ALL work from within CC
                 │         ╭─ code conventions are not in the model
                 ├─ limits ┼─ fine-tuning doesn't work well ── leads to more hallucinations
                 │         ╰─ in-context learning ── ICL ── general AI wins over specific AIs
                 │                                                         ╭─ rigid templates
                 │                     ╭─ compensates lack of intelligence ┼─ guardrails
                 │                     │                                   ├─ "don't let it touch X"
                 ├─ two kinds of tools ┤                                   ╰─ gets less useful as model improves
                 │                     │                           ╭─ more access
                 │                     ╰─ scales with intelligence ┼─ more control
                 │                                                 ├─ faster feedback loops
                 │                                                 ╰─ gets more useful as model improves
                 │                          ╭─ context window stayed at 1M max ── models are way better yoy
                 │                          ├─ can't dump the whole X into context ── X ┬─ wiki
                 ├─ context window is a box ┤                                           ╰─ codebase
                 │                          ├─ example ── try to run npm on Arduino
                 │                          ╰─ don't pay for what you don't use ── [TK: no slop skills]
                 │           ╭─ cached tokens are cheap ── new are expensive
                 │           ├─ not an LRU problem
                 ├─ KV cache ┼─ change in early instructions invalidates the cache ┬─ add new tool
                 │           │                                                     ╰─ change in CLAUDE.md
                 │           ╰─ put stable stuff at the front ── volatile at the end ── CC teams tries to solve this problem
                 ├─ Large-scale Software Engineering ── main question ── Does it scale?
                 │                           ╭─ when it's the right tool?
                 │                           ├─ CC has a shell ── Skill+CLI has less overhead
                 │                           │                                 ╭─ name
                 │                    ╭─ MCP ┼─ tools definitions sit in front ┼─ arguments
                 │                    │      │                                 ╰─ description
« Agentic flow » ┤                    │      │              ╭─ puts just name in the system prompt
                 │                    │      ╰─ tool search ┼─ kind-of lazy-loaded
                 │                    │                     ╰─ needs to be very specific ── e.g. slack
                 │                    │         ╭─ in-context
                 │                    │         ├─ one-line description always loaded
                 │                    │         ├─ full SKILL.md and assets loaded on-demand
                 ├─ Plugin primitives ┼─ Skills ┤                 ╭─ body is pay-per-use ── good
                 │                    │         ╰─ does it scale? ┼─ reliably loading requires a paragraph in description
                 │                    │                           ╰─ not possible to lazy-load sub-skills ┬─ no hierarchy yet
                 │                    │                                                                   ╰─ what if 100k skills?
                 │                    ├─ Hooks ┬─ runs code on events ── shell scripts
                 │                    │        ╰─ zero-overhead abstraction
                 │                    │         ╭─ out-of-context ── fundamental difference to a skill
                 │                    │         │               ╭─ named role
                 │                    │         ├─ more Claudes ┼─ own system prompt
                 │                    ╰─ Agents ┤               ╰─ own tool set
                 │                              ├─ spawned with a task ┬─ returns result
                 │                              │                      ╰─ its transcript doesn't come back
                 │                              ╰─ description still in-context ── what if 100k agents?
                 │                             ╭─ loads fully unconditionally ┬─ doesn't scale
                 │                ╭─ CLAUDE.md ┤                              ╰─ every plugin adds it
                 ├─ Doesn't scale ┤            ╰─ better inject via SessionStart hook
                 │                │         ╭─ low-quality ── low-cost ── useful, different contract
                 │                ╰─ Memory ┼─ model-curated, not human-curated
                 │                          ╰─ plugins are human-authored, human-reviewed
                 │                 ╭─ worktrees ┬─ one repo ── N claudes each owns its branch
                 │                 │            ╰─ better make it long-lived ── less overhead ── [TK: try kunchenguid/treehouse?]
                 ├─ Multi-clauding ┼─ asynchrony ┬─ walk away, let it do the work
                 │                 │             ╰─ /loop 10m
                 │                 ├─ parallelism ── multiple of asynchrony
                 │                 ╰─ lot's of context switching
                 ╰─ Agent-teams ┬─ teammates ── long-lived ── unlike agents
                                ╰─ SendMessage tool ── Claude's talking to each other

Follow-up questions:

SafariTabs.app

We need RSS for sharing abundant vibe-coded apps post by Matt Webb mentions Tabulator app, part of Wall of Apps by Matt Sephton. All the apps there share the same minimalist design, native Swift UI, tiny and, supposedly, fast. The downside is that they are paid.

I wanted to try Tabulator, as I use seal_safari_tabs.lua with Hammerspoon. So I built SafariTabs.app (using Claude Code, a project), source code is here – velppa/SafariTabs. Version v0.1.0.

260508--safari-tabs-v0-1-0__app_macos.png

Features:

  • Fuzzy-searching for tabs
  • Keyboard navigation
  • Switching to the selected tab
  • Close tab
  • Headless mode, "safaritabs:" URL scheme

Let's see if I'm going to use it, if yes – will think about publishing a release. If you want to build it – clone the repo and ask Claude Code to build it.

Trying Textpod once again

On <2026-04-13 Mon> I installed Textpod on Mac Book Pro M1 using Cargo (Rust tooling).

Good:

Open questions:

I ended up forking it to https://github.com/velppa/textpod and greatly improving it for my needs. You're reading notes served by Textpod v0.2.0. It is my project.

Notable changes:

Later changes to setup will go into separate notes.

Vincent Van Gogh gallery

I found on my external drive a collection of Vincent Van Gogh paintings, that I converted into desktop wallpapers using Backgroundifier app (archagon/backgroundifier-public) several years ago.

The collection is pretty big, 1380 paintings. To explore it in a better way than just going through files on a disk, I built an interactive gallery (a small project using Claude Code). It serves images directly from my external drive; also had to prepare thumbnails for faster loading.

Check it out here: https://hotter.myaddr.dev/van-gogh/, not bad for couple hours of work, don't you think?

260503--van-gogh-gallery__screenshot.png