LogoBotmonster Tech
AI Smart Home Self-Hosting Coding Web Dev Hardware Bootpag Image2SVG Tags

Coding

Pragmatic notes on developer tools, languages, and workflows. Shortcuts, tricks, and lessons from actually shipping code.

  • ◀︎
  • 1
  • 2
  • 3
  • 4
  • 5
  • ▶︎
Custom Linter Rules: JavaScript, Python, Go ASTs

Custom Linter Rules: JavaScript, Python, Go ASTs

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.

Redis Streams vs Kafka: 100K-500K ops/sec alternative

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 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

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

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 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.

  • ◀︎
  • 1
  • 2
  • 3
  • 4
  • 5
  • ▶︎

Most Popular

Build Powerful TUI Apps in Python with Textual and Rich

Build Powerful TUI Apps in Python with Textual and Rich

Build professional terminal UIs with Textual: a Python framework with CSS styling, reactive widgets, and async events for dashboards and developer tools.

Three racing robots on parallel tracks, one chrome and sealed, one open-framed with swappable engine modules, one screen-headed on wheels

OpenCode vs Claude Code vs Cursor: Model-Agnostic Verdict

OpenCode vs Claude Code: Claude runs 45% faster, OpenCode writes 29% more tests, and the right pick depends on your model and budget. Cursor slots in too.

Seven robotic hands reach for a glowing key, three chained to vendor vaults, two holding open rings of swappable model keys, two on short routed leashes, beside a cost-balance scale

Best AI Coding Agents in 2026: Cost, Autonomy, and Lock-In

Compare the seven best AI coding agents in 2026 on real cost per finished task and model lock-in, covering Claude Code, Codex CLI, Gemini CLI, Cursor, OpenCode, Pi, and GitHub Copilot.

An old open terminal sealed in a specimen jar beside a closed steel monolith labeled agy, with a developer crossing a bridge between them.

Gemini CLI Is Dead: Migrating to Antigravity CLI in 2026

Gemini CLI shut down on June 18, 2026. Migrate to the closed-source Antigravity CLI, keep Gemini running with an API key, and see what the new quota costs.

Is the StarFive VisionFive 2 the Best RISC-V SBC for Developers?

Is the StarFive VisionFive 2 the Best RISC-V SBC for Developers?

StarFive VisionFive 2 brings RISC-V development within reach: JH7110 quad-core, Vulkan GPU, Debian 13, NVMe support, and Raspberry Pi GPIO compatibility.

Interactive Go CLIs with Cobra Command Trees and Bubble Tea

Interactive Go CLIs with Cobra Command Trees and Bubble Tea

Cobra and Bubble Tea combine argument parsing and rich terminal UIs into one Go binary that works as both a scriptable tool and a polished app.

Like what you read?

Subscribe to the Botmonster newsletter and get Linux, AI, and self-hosting posts weekly.

Privacy Policy  ·  Terms of Service
2026 Botmonster