I added a fourth platform to the blog's publishing pipeline today. A post now goes to blog.rezvov.com, Dev.to, Hashnode, and the Telegram channel @arezvov_race_mode_on. Same git push, four places.
This post is two things. A short note on how the Telegram piece works. And a tour of the blog by topic for anyone who just arrived.
How the Telegram piece works
The infra took an evening. The existing crosspost system already had a PlatformConfig interface for Dev.to and Hashnode — so adding Telegram was about 150 lines of TypeScript. Format the message with HTML, call sendMessage, store the message_id in a YAML plan file for later edits.
What took longer was deciding what to post.
Dropping a 5000-word article into Telegram is absurd. Telegram needs the short version. I'd been writing those manually for LinkedIn — every post got a 1000-char teaser that lived only in my LinkedIn feed. So I formalized a promo field in each post's frontmatter: plain text, 800–1500 chars, written in the same voice as the post.
---
title: "..."
slug: "..."
promo: |
Hook sentence.
Two or three paragraphs that carry the post's actual argument,
with concrete numbers and examples. Not a summary. A pitch that
makes someone stop scrolling.
Closing insight that stands on its own.
---
The crosspost script adds the title, canonical URL, and hashtags around it. Two problems solved at once — automated Telegram posting, and LinkedIn promos no longer live only in LinkedIn. They're in the blog repo. Versioned, reviewable in PRs.
A linter rule enforces the constraints: 200–3000 chars, no URLs, no hashtags, no markdown. The script adds the URL and hashtags at send time.
Backfill was the interesting part. Eight posts had existing LinkedIn promos I'd written myself — Claude for Chrome scraped them from my LinkedIn activity feed into JSON, I cleaned URLs and hashtags, pasted into frontmatter. For the other 33 posts I never got around to promoting on LinkedIn, five Opus agents drafted promos in parallel using a style guide I built from the eight real examples. I reviewed, tweaked, applied. Each Claude-drafted promo ends with *extracted by Claude so I can track provenance.
The canonical @arezvov_race_mode_on channel is also my running log. So between blog posts, you'll see the occasional run report. If that's not what you're there for, the hashtags are split — #article for blog posts, different tags for training.
A tour of the blog
If you came here from Telegram and want a sense of what I actually write about, here's a topic-by-topic map.
Context engineering and parsimony
Over the last six months this has become the topic I think about most. Claude and other LLMs have a context budget, and how you spend it determines whether the agent is useful or just confidently wrong.
- Principle of Parsimony in Context Engineering — a design rule: every element in the context exists because it contributes to unambiguous task interpretation, enforceable constraints, or result quality. If it doesn't, cut it.
- When Prompt Engineering Stops Being Enough — where prompt engineering breaks at scale, and what replaces it.
- Less Documentation, More Signal — I trimmed a 500-line instruction file to 40 lines. Humans navigated faster too. Volume stopped meaning quality.
- Context Engineering with ExoChat: Parsimony in Action — how this works on a real production system.
AI-driven development in practice
- Five Levels of AI-Agent Adoption in Software Development Teams — a taxonomy based on 100+ engineers across 12 projects. L1 (agent babysitting) through L5 (autonomous). You can't skip levels.
- Specification-Driven Development: The Four Pillars — how we organize agent-driven teams at ForEach Partners.
- Build vs. Buy for Agent Harnesses — when to roll your own, when to adopt.
- What CTOs Actually Said About Rust and LLMs — survey result that surprised me.
Deploying and debugging AI tools
- Deploying OpenClaw: 16 Incidents, One Day, $1.50 — a narrative of a full-day deployment. Infinite retry loops, thinking-block traps, what broke and why.
- OpenClaw Troubleshooting: "No Reply from Agent," WORKFLOW_AUTO.md, and Silent Delivery Failures — the diagnostic companion.
- LLMs Changed the Rules: Git for Everyone, SQL for Everyone, Rust for Almost Everyone — how the syntax barrier dropped and who walked through.
- Rust and LLMs: The Compiler Does What Code Review Shouldn't Have To — strict types as a discipline for AI-generated code.
Engineering management
- Founder Mode — A New Name for Micromanagement? — the viral term and what it actually describes.
- The Role of a Team Lead — four responsibilities and the hyper-responsibility trap.
- Resolving Architectural Conflicts in Development Teams — when senior engineers disagree on structure.
- Doubt Means Growth — why engineers who stop questioning themselves plateau.
The blog itself (meta)
- Migrating from Ghost to Next.js: A Journey with Claude and Cursor — the stack rebuild.
- Making Your Blog LLM-Friendly: Implementing llms.txt — exposing posts as raw Markdown for AI crawlers.
- Five Weeks with a Next.js Blog: What Got Built — what accumulated in the first month and a half.
Where to follow
-
Blog: blog.rezvov.com — canonical, with RSS at
/rss.xml - Telegram: @arezvov_race_mode_on — short versions, plus running log
- Dev.to: dev.to/arezvov — same articles, different audience
- Hashnode: arezvov.hashnode.dev — same
-
LinkedIn: linkedin.com/in/arezvov — I post the same
promotext there manually
If you have a preferred channel, pick one. The canonical version with comments, search, and code highlighting is always on the blog.
Originally published: Alex Rezvov Blog Now in Telegram! Tour for New Readers — Alex Rezvov's Blog
Top comments (0)