Writing
Practical observations from building software: not motivational fluff.
2026
AI agents in real business: what building a production support agent actually taught me
The model is the cheap part of a support agent. What makes one production-ready is grounding, validation at every boundary, and a fallback that never shows the visitor an error page.
TypeScript · OpenAI · MCP
Sep 17, 2026 · Automation · 4 min
WireGuard site-to-site VPN between office and cloud: the whole config
Two peers, twenty lines of config each: how a WireGuard site-to-site tunnel routes a whole office subnet to a cloud VPS, the AllowedIPs semantics that make or break it, and the MTU number to fix before debugging anything else.
WireGuard · Linux · Networking
Sep 16, 2026 · DevOps · 3 min
Telegram shop bots for German SMBs: the anatomy of a chat store
A Telegram shop bot is a storefront with two surfaces: keyboards in the chat and a Mini App web view, one backend behind both. What such a bot consists of, how Stars payments work, and where the app-store comparison breaks down.
TypeScript · Telegram · Payments
Sep 16, 2026 · BaaS · 5 min
Telegram notifications for an existing Laravel app
A bot token, a chat id, and one queued job: how to add Telegram as a Laravel notification channel with plain HTTP calls, the documented rate limits to respect, and the inline buttons that turn alerts into approve-and-reject workflows.
Laravel · PHP · Telegram
Sep 16, 2026 · Automation · 3 min
Validating Telegram Mini App initData on the server
initDataUnsafe is attacker-controlled; the signed initData string is the only thing worth parsing. The exact HMAC-SHA256 algorithm, the auth_date freshness question the docs leave open, and what the 10.2 domain lock does not cover.
TypeScript · Telegram · Security
Sep 16, 2026 · Backend · 3 min
Telegram guest mode: answering groups your bot was never added to
Bot API 10.0 lets any group summon a bot with an @mention without adding it: guest_message in, answerGuestQuery out. What the flag does, what the bot can and cannot see, and the one limit the docs do not confirm.
Telegram · TypeScript · Bot API
Sep 16, 2026 · BaaS · 4 min
A Lighthouse 100 on desktop with Next.js 16: the levers that moved the score
Desktop 100 across the board, mobile stuck at 77 to 84: which levers moved this site's score (inlineCss, both-theme critical CSS, a server-only header, lazy islands) and why the remaining mobile gap is React hydration, not a config mistake.
Next.js · React · Performance
Sep 16, 2026 · Web Development · 4 min
Laravel + Livewire or a React SPA: choose by where the state lives
Both stacks in production later, the decision rule that survived: Livewire when the state belongs to the server anyway, React when the interface must hold complex state in the browser. Compared by round-trips, SEO, team skills, and the cost of being wrong.
Laravel · Livewire · React
Sep 16, 2026 · Architecture · 4 min
CDN caching for a Laravel app: what Cloudflare may hold
Three cache layers decide how much of a Laravel app the edge can absorb: immutable static assets, short-lived public pages with stale-while-revalidate, and everything session-bound uncached. What Cloudflare caches by default, the headers to send, and how to purge on purpose.
Laravel · Cloudflare · Redis
Sep 16, 2026 · DevOps · 3 min