You can catch domain-specific anti-patterns that ESLint
, Ruff
, or golangci-lint
miss by writing custom linter rules that parse your code into an Abstract Syntax Tree (AST), walk the tree to match specific node patterns, and report violations with auto-fix suggestions. The process is the same regardless of language: parse source into a tree, define the pattern you want to catch, walk the tree to find matches, and emit diagnostics. In JavaScript/TypeScript, this means writing an ESLint plugin with a visitor-pattern rule. In Python, you write a flake8 plugin using the ast module or a Ruff plugin in Rust. In Go, you use the go/ast and go/analysis packages.
Coding
Pragmatic notes on developer tools, languages, and workflows. Shortcuts, tricks, and lessons from actually shipping code.
Custom Linter Rules: JavaScript, Python, Go ASTs
Redis Streams vs Kafka: 100K-500K ops/sec alternative
Redis Streams give you a light, self-hosted option versus Apache Kafka
for event-driven data pipelines. You get append-only log semantics, consumer groups with ack tracking, and sub-millisecond latency on a single Redis
7.4+ instance. Producers XADD events to a stream. Consumer groups read with XREADGROUP in Python via redis-py
. Manual XACK calls plus a pending entry list (PEL) give you at-least-once processing.
What follows covers stream basics, consumer groups with failure recovery, a full producer and consumer pipeline with a dead-letter queue, and the ops practices to keep Redis Streams healthy in production.
Git Worktrees: The Underused Feature for Multi-Branch Development
git worktree lets you check out multiple branches of the same repository simultaneously into separate directories - no stashing, no cloning, no context switching overhead. Each worktree shares the same .git object store, so you get independent working trees instantly without re-downloading any history. Run git worktree add ../my-repo-hotfix hotfix/urgent-fix and you have a fully functional working tree on a separate branch, ready to build and test while your feature branch stays untouched in the original directory.
FastAPI Webhook Bot: GitHub and Gitea Automation
You can build a bot that labels issues, enforces PR naming, posts review comments, and triggers workflows. Write a FastAPI app that takes webhooks from GitHub or Gitea , checks the signature, and calls back to the right API. The same handler works for both forges. Header names and payload shape differ a bit, so one codebase can serve both.
How Repository Webhooks Work on GitHub and Gitea
Both GitHub and Gitea let you set up webhooks at the repo, org, or (for Gitea) system level. When an event fires (someone opens an issue, pushes a commit, opens a PR) the forge sends an HTTP POST to a URL you control. The body is JSON and describes what happened.
Rust for Python Developers: Rewrite Your Hot Paths for 10x Speed
Python is excellent for most of what developers throw at it - API servers, data pipelines, automation scripts, machine learning glue code. But CPU-bound work is a different story. When you’re parsing 500MB log files, running simulation loops, or crunching millions of rows in a tight inner loop, you’re going to hit a wall. Not always, but often enough that it becomes a real problem.
The solution is not to rewrite your entire application in Rust. That’s dramatic and usually unnecessary. The better approach is to profile your code, find the 5-10% that consumes most of the CPU time, and rewrite just that part in Rust. The rest of your codebase stays Python. Your interfaces stay Python. You just swap out the slow function for a fast one.
SQLite Scales to Production: 10K TPS, WAL Mode, Real Benchmarks
SQLite is the right default database for most apps. With WAL mode on, it gives you unlimited concurrent readers and one writer. That writer can sustain thousands of transactions per second on modern NVMe drives. SQLite also handles files up to 281 TB and needs zero config, zero extra processes, and zero network hops. Start with SQLite. Move to PostgreSQL only when you hit a real, measured limit, not a guess.
Botmonster Tech




