LogoBotmonster Tech
AI Smart Home Self-Hosting Coding Web Dev Hardware Bootpag Image2SVG Tags
Building a Language Server Protocol Extension from Scratch

Building a Language Server Protocol Extension from Scratch

The Language Server Protocol (LSP) lets you write language smarts once and use them in every editor. You build one server that handles autocomplete, diagnostics, hover docs, and go-to-definition. Then you plug it into VS Code, Neovim, Helix, Emacs, or anything else that speaks LSP. This walkthrough shows how to build an LSP server in TypeScript for a custom .config file format, from setup through multi-editor support.

What the Language Server Protocol Actually Is

Before LSP, editor support for a language meant writing a separate plugin for every editor. Want Python support? Write a VS Code extension, an Emacs mode, a Vim plugin, a Sublime plugin. Each one redoes parsing, diagnostics, and completion from scratch. With N editors and M languages, that’s N*M plugins to maintain.

Dagger CI Pipelines: Write Your CI in Go or Python Instead of YAML

Dagger CI Pipelines: Write Your CI in Go or Python Instead of YAML

Dagger lets you write CI/CD pipelines in Go, Python, or TypeScript instead of YAML. Your pipelines run inside containers, execute identically on your laptop and in CI, and get type-checked by your compiler or linter before they ever touch a remote runner. If you’ve spent hours pushing commits just to debug a GitHub Actions workflow, Dagger is the fix.

The core idea: pipeline steps are function calls in a real programming language. Each function call builds a directed acyclic graph (DAG) of container operations. The Dagger Engine (built on BuildKit ) executes this graph with automatic parallelization and layer caching. You run dagger call ci --source . locally, get the same result in GitHub Actions, GitLab CI, or CircleCI, and never write vendor-specific YAML again.

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

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

For most developers wanting hands-on RISC-V in 2026, the StarFive VisionFive 2 at $65 for the 8GB model is the most practical entry point. It runs Debian 13 (Trixie) on the JH7110 quad-core SiFive U74 at 1.5GHz, ships with an Imagination BXE-4-32 GPU that now has mainline Mesa Vulkan drivers, supports Docker and NVMe via kernel 6.6+ LTS, and delivers roughly 60-70% of a Raspberry Pi 4’s single-threaded speed. That gap is smaller than you might expect when the goal is learning RISC-V toolchain internals. The ecosystem here has matured enough that you spend time writing code, not fighting drivers.

NATS JetStream vs Kafka: Simpler Ops, Sub-Millisecond Latency

NATS JetStream vs Kafka: Simpler Ops, Sub-Millisecond Latency

To wire up loose Python microservices, use NATS JetStream as the message bus with the nats-py client. JetStream gives you durable consumers, full stream replay, and exactly-once delivery through message dedup and double-ack. It does this in sub-millisecond time, with one small server binary. No Kafka brokers, no ZooKeeper.

This guide covers JetStream setup, pub/sub with durable consumers, a three-service order pipeline, and the steps to harden it for production.

Defensive Coding in Rust: Error Handling Patterns That Scale

Defensive Coding in Rust: Error Handling Patterns That Scale

Rust error handling in 2026 rests on four patterns. You use Result<T, E> with custom enums for libraries. You reach for thiserror to derive those enums with less boilerplate. You pick anyhow to pass errors up through application code. And you add miette or color-eyre for friendly diagnostic reports. The right choice depends on whether you write a library or an application. Most real Rust projects use both: thiserror in their library crates and anyhow in their binary crates.

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.

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

Most Popular

AI Coding Agents Are Insider Threats: Prompt Injection, MCP Exploits, and Supply Chain Attacks

AI Coding Agents Are Insider Threats: Prompt Injection, MCP Exploits, and Supply Chain Attacks

Study of 78 coding agents including Claude Code, Copilot, Cursor: all vulnerable to prompt injection attacks succeeding 85% of the time with adaptive vectors.

Hyprland vs Sway vs COSMIC: Best Wayland Compositor for Developers in 2026

Hyprland vs Sway vs COSMIC: Best Wayland Compositor for Developers in 2026

Compare Sway, Hyprland, and COSMIC Wayland compositors. Covers tiling models, display handling, plugin ecosystems, and stability for your workflow.

Hypothesis Property Testing: Find Edge Cases Automatically

Hypothesis Property Testing: Find Edge Cases Automatically

Hypothesis generates hundreds of randomized inputs to find bugs example-based tests miss. Shrinks to minimal failing cases. Works with pytest, unittest, and CI.

5 Open Source Repos That Make Claude Code Unstoppable

5 Open Source Repos That Make Claude Code Unstoppable

Five March 2026 repos extend Claude Code with autonomous ML, self-healing skills, GUI automation, multi-agent coordination, and Google Workspace access.

OpenAI Codex CLI: The Rust-Powered Terminal Agent Taking on Claude Code

OpenAI Codex CLI: The Rust-Powered Terminal Agent Taking on Claude Code

A Rust terminal coding agent with OS sandboxing and CI integration. Technical breakdown of architecture, security model, and comparison to Claude Code.

Like what you read?

Get new posts on Linux, AI, and self-hosting delivered to your inbox weekly.

Privacy Policy  ·  Terms of Service
2026 Botmonster