Better Stack Community
Learn from the experts
Explore in-depth guides on scaling apps in production, observability, DevOps, and more.
Scaling containers
Learn everything you need to know about building, deploying and scaling containerized applications in production.
Docker Swarm vs Kubernetes: A Practical Comparison
Explore the pros and cons of Docker Swarm and Kubernetes and gain valuable insights to help you choose the right solution for your infrastructure needs.
A Comprehensive Guide to Logging in Python
Python provides a built-in logging module in its standard library that provides comprehensive logging capabilities for Python programs
Log Formatting in Production: 9 Best Practices
Learn 9 best practices for formatting your logs in production to make them easy to read, parse, and troubleshoot.
The Top 7 Log Shippers and How to Choose One
This article will help you choose the right log shipper for your needs, and will also provide a comparison of the top 6 log shippers on the market
How to Create a Developer-Friendly On-Call Schedule in 7 steps
Trying to build a new on-call schedule or just fix an existing one that doesn't work? Here is how to do it the right way.
Logging
Learn everything you want to know about logging. Go from basics to best practices in no time.
Using Morgan for Request Logging in Express Apps
This article describes how to add request logging to your Express.js applications with Morgan.
Practical Logging for PHP Applications with OpenTelemetry
Learn how to use the OpenTelemetry framework to instrument your PHP applications with code that gathers log data for observability pipelines
How To Start Logging With Log4php
Learn how to start logging with Log4php and go from basics to best practices in no time.
Monitoring Linux Authentication Logs: A Practical Guide
Learn to effectively monitor Linux authentication logs to detect security threats with this practical step-by-step guide
Logging in Microservices: 5 Best Practices
Learn more about the best practices for effective logging in a microservice architecture
Observability
Learn everything about monitoring and gaining insights into your systems. Understand metrics, traces, logs, dashboards, and alerting strategies.
What is Observability?
Tired of blind spots and endless troubleshooting? Learn how observability provides the deep insights you need to understand your complex systems
Instrumenting PHP Apps with OpenTelemetry Metrics
Instrumenting Java Apps with OpenTelemetry Metrics
This article provides a detailed guide on integrating OpenTelemetry metrics into your Java application
Essential OpenTelemetry Collector Components for Observability Pipelines
A comprehensive guide to essential OpenTelemetry Collector components for building effective observability pipelines, covering data ingestion, processing, and export capabilities.
Deploying the OpenTelemetry Helm Chart in Kubernetes
Learn how to efficiently deploy the OpenTelemetry Collector to Kubernetes using Helm charts, with practical configuration examples and operational best practices for robust observability.
Monitoring
Learn everything you need to know about monitoring and observability. Go from basics to best practices in no time.
How to Increase Prometheus Storage Retention
Learn how to increase Prometheus storage retention beyond the default 15 days. This guide covers configuration methods for systemd, Docker, and Kubernetes.
Creating Grafana Dashboards for Prometheus: A Beginner's Guide
This guide will teach you how to configure Grafana for querying and visualizing Prometheus data
A Complete Guide to Monitoring With Uptime Kuma
Monitoring Linux with Prometheus and Node Exporter
This guide will teach you how to install and configure Prometheus and Node Exporter for monitoring your Linux servers
Deploying Grafana on Kubernetes using Helm Charts
Learn how to deploy Grafana on Kubernetes using Helm charts, connect data sources, and create custom dashboards to visualize metrics from your applications and infrastructure.
Incident management
Learn everything you want to know about incident management. Go from basics to best practices in no time.
On-call Compensation Models (and How to Solve On-Call Pay)
What Is a Status Page? (And 5 Benefits of Getting One)
Learn what is status page, how does it work, what are the benefits and drawbacks and how to set it up.
How to Create a Developer-Friendly On-Call Schedule in 7 steps
Trying to build a new on-call schedule or just fix an existing one that doesn't work? Here is how to do it the right way.
4 On-Call Schedule Templates (With Benefits and Downsides)
Why Are Status Pages Important: 5 Reasons (And How to Get Started)
Scaling containers
Learn everything you need to know about building, deploying and scaling containerized applications in production.
Docker Security: 14 Best Practices You Should Know
Learn 14 Docker best practices to ensure that your deployments are robust, resilient, and ready to meet the challenges of modern security threats.
Trivy Explained: Image, Filesystem, and IaC Security Scanning
Learn how to use Trivy to scan container images, repositories, and infrastructure as code for vulnerabilities and misconfigurations. Discover how to automate security checks in your CI/CD pipeline and strengthen your software supply chain.
Dozzle: Real-Time Log Viewer for Docker Containers
Learn Dozzle for Docker container log monitoring: real-time streaming, zero-configuration setup, SQL queries with DuckDB, webhook-powered alerts, and production security. Complete guide from installation to advanced features.
Code Server: Running VS Code on Remote Servers
Learn how to set up Code Server for remote development. Discover how to run VS Code in your browser, offload resource-intensive tasks, ensure environment consistency, and access your development workspace from any device using Docker.
Exploring Podman: A More Secure Docker Alternative
This article explore Podman's features and benefits, comparing it to Docker and describing a step-by-step migration guide
Scaling Node.js applications
Take your Node.js applications to production: Learn building, deployment, and scaling essentials
Building Web APIs with Hapi.js
Learn to build a complete REST API with Hapi.js and MongoDB. Step-by-step tutorial covering CRUD operations, validation, error handling, and best practices.
W-Term: A DOM-Based Web Terminal from Vercel with Ghostty Core Support
W-Term renders terminal output as HTML div elements rather than canvas, enabling native browser text selection, copy-paste, Ctrl+F search, and screen reader support. The default engine is a ~12KB Zig-compiled WASM binary; an optional Ghostty core (~400KB) provides more complete VT emulation for complex TUI applications.
HTML-in-Canvas API: Rendering Live DOM Elements as Canvas Textures
The HTML-in-Canvas API is an experimental Chromium feature that lets you render live, interactive HTML elements directly onto a 2D or WebGL canvas. It uses a layoutsubtree attribute to keep child elements in the layout tree without painting them to the DOM, then exposes them via drawElementImage and texElementImage2D.
The Shai-Hulud Worm: A New Cross-Ecosystem Supply Chain Attack
The Shai-Hulud worm has evolved to cross from NPM into Go modules and use IDE configuration files instead of install scripts to execute malware. Here's how the attack works and how to defend against it
TypeScript 7.0: New Features and the Go-Powered Compiler Rewrite
TypeScript 7.0 rewrites the compiler in Go, cutting type-check times by up to 10x on large codebases. Here's what changed, how the new parallelism flags work, and what to expect when upgrading.
Scaling PHP applications
Learn everything you need to know about building, deploying and scaling PHP applications in production.
Building Production-Ready Docker Images for PHP Apps
Learn about Docker images and containers, putting together a `Dockerfile`, and building a fully custom Docker image for deploying PHP apps to production
Scaling PHP Applications with RoadRunner
Learn how RoadRunner's application server model outperforms traditional FPM for high-traffic PHP applications
A Complete Guide to Task Scheduling in Laravel
Learn how to create and monitor scheduled tasks in a Laravel application
Laravel Error Handling Patterns
Learn how to handle errors in Laravel the right way. This in-depth guide covers exception types, global and context-aware error handling, logging, debugging, and patterns to keep your app reliable and user-friendly
Containerizing Laravel Applications with Docker
Scaling Python applications
Learn everything you need to know about building, deploying and scaling python applications in production.
Scrapling: Adaptive Web Scraping with Self-Healing Selectors in Python
Scrapling is a Python web scraping framework that stores structural clues about matched elements (tag, attributes, parent, text, DOM position) and uses them to relocate elements after a website redesign, even when CSS class names and structure change. It also bundles three fetchers (Fetcher, DynamicFetcher, StealthyFetcher) and a spider framework.
Runpod Flash: deploying serverless GPU functions from Python
Runpod Flash is a Python SDK that deploys GPU-accelerated functions to serverless cloud infrastructure using a decorator, with no Dockerfile, container registry, or deployment configuration required
Get Started with Job Scheduling in Python
Learn how to create and monitor Python scheduled tasks in a production environment
15 Common Errors in Python and How to Fix Them
Dealing with errors is a significant challenge for developers. This article looks at some of the most common Python errors and discusses how to fix them
Containerizing Django Applications with Docker
This article provides step-by-step instructions for deploying your Django applications using Docker and Docker Compose
Scaling Ruby applications
Everything about building, deploying and scaling Ruby applications in production.
RailsAdmin vs Trestle: Automatic Admin Panels vs Explicit Control
Compare RailsAdmin’s auto-generated admin panel with Trestle’s explicit, code-driven resources. Learn how each handles setup, customization, and long-term flexibility so you can choose between fast setup and full control over your Rails admin
RailsAdmin vs ActiveAdmin: Centralized vs Modular Admin Configuration
Compare RailsAdmin and ActiveAdmin: RailsAdmin centralizes config in one initializer, while ActiveAdmin splits settings into per-resource files in `app/admin/`.
ERB vs Slim: Which Rails Template Language Should You Use?
A practical comparison of ERB and Slim for Rails views, explaining their syntax, readability, HTML compatibility, performance, and how each template language affects collaboration between developers and designers.
ERB vs Haml: Syntax, Structure, and How They Shape Your Rails Views
A practical comparison of ERB and Haml in Rails, covering syntax, readability, structure, performance, and how each templating language affects developer workflow and template maintenance.
Haml vs Slim
Compare Haml vs Slim for Ruby and Rails views. Learn how their syntax, attributes, whitespace, and readability differ so you can choose the right template engine.
Scaling Go applications
Learn everything you need to know about building, deploying and scaling Go applications in production.
How to Work with SQL Databases in Go
The article will discuss the use of the database/sql package in Go to connect to a database, execute SQL statements, and handle returned results. It will also cover advanced topics like prepared statements, transactions, and connection pooling.
A Comprehensive Guide to Using JSON in Go
Rust vs Go vs Zig for Systems Programming
Compare Rust, Go, and Zig for systems programming. Learn their memory management approaches, performance characteristics, and when to choose each language for your next project.
Rust vs Go: A Comprehensive Language Comparison
Rust vs Go: Complete comparison of memory management, concurrency, performance, and development experience. Learn which language fits your project better
Database migrations in Go with golang-migrate
Learn how to effectively manage database schema changes in Go applications using golang-migrate, including creation, execution, rollbacks, and CI/CD integration.
Testing
Learn about the different types of automated tests that can be created for software , how they differ from each other, and when to use each one.
9 Playwright Best Practices and Pitfalls to Avoid
Explore 9 essential Playwright best practices to enhance the reliability, efficiency, and effectiveness of your end-to-end tests
A Beginner's Guide to Unit Testing with Pytest
Learn how to write clean, concise, and effective Python tests using Pytest's intuitive syntax, fixtures, parametrization, and rich plugin ecosystem
How to Get Started with Unit Testing in Laravel
Testing with Cucumber
Learn Cucumber for Ruby with hands-on BDD examples. Write plain-language tests, align developers and stakeholders, and build reliable, maintainable apps.
Getting Started with Minitest
Learn Ruby testing with Minitest. Start with simple assertions, explore advanced patterns, and build maintainable apps with confidence.
Linux
Learn how to use various command-line utilities to perform simple and advanced administrative tasks on Linux-based systems
TUFW Explained: A Simple UI for UFW
Learn how to use TUFW, a terminal UI for UFW, to simplify Linux firewall management. Install TUFW, create SSH and web rules, whitelist IPs, and harden your server security without memorizing complex ufw commands.
SiYuan: Block-Based Linking, Built-in Databases, and Self-Hosted Knowledge Management
SiYuan is an open-source, local-first personal knowledge management system that assigns permanent IDs to every content block, enabling unbreakable cross-document links. It includes native databases, SQL querying, and an interactive graph view, and runs in Docker.
Apple Container Machines: Linux VMs on macOS
Apple's Container Machines bring a native, lightweight Linux VM experience to macOS, optimized for Apple Silicon. Here's how it works, how to set it up, and how it compares to Docker Desktop and OrbStack.
Devbox: Reproducible Development Environments with devbox.json and Nix
Devbox is a CLI tool that creates isolated, reproducible development shells using Nix under the hood. It stores dependencies in a devbox.json and a lockfile, supports scripts, init_hook for setup automation, and can generate Dockerfiles from the same configuration.
Pake: Package Any Website as a Desktop App with Tauri and Rust
Pake is a CLI tool that wraps any URL into a native desktop application using Tauri and the OS's built-in webview. The result is a standalone macOS/Windows/Linux app typically under 10MB. It supports custom icons, window dimensions, title bar hiding, CSS/JS injection, and system tray integration.
Web servers
Learn everything about deploying and managing web servers in production
Linode (Akamai Cloud) Review 2026
Learn if Linode (Akamai Cloud) is the right VPS for you in 2026. Real benchmark data covering CPU, disk I/O, and network, plus pricing, support, and ecosystem coverage
DigitalOcean Review 2026: Benchmarks, Pricing, and the Real Trade-offs
We benchmarked DigitalOcean's $24/month 2vCPU/4GB Droplet with real YABS results. Strong disk and network performance, but weaker CPU scores and higher pricing compared to European rivals
DigitalOcean vs. Hetzner Cloud: a side-by-side comparison for 2026
DigitalOcean vs Hetzner Cloud: compare pricing, performance, bandwidth, and managed services for 2 vCPU / 4 GB cloud servers in 2026
DigitalOcean vs. Vultr: a side-by-side comparison for 2026
DigitalOcean vs Vultr VPS comparison. Benchmarks for CPU, disk I/O, network throughput, pricing, and managed services.
DigitalOcean vs. Linode (Akamai Cloud)
DigitalOcean vs Linode in 2026: real benchmarks comparing CPU, disk, network performance, pricing, and developer ecosystem at the same $24/month tier.
AI
Learn about the essentials of deploying and managing AI models in production, including model training, scaling, and performance optimization.
Flue: Headless, Programmable AI Agent Framework from the Astro Team
Flue is an open-source TypeScript framework for building AI agents with a harness-first design. Agents are defined with createAgent(), skills are Markdown files, and the default sandbox is an in-memory just-bash shell with no Docker overhead. Workflows are exposed as HTTP endpoints via a single flue build --target node command
Google Workspace CLI: An Agent-First Interface for the Google Workspace APIs
The gws CLI is a Rust-based tool that lets AI agents interact with the entire Google Workspace API surface through structured JSON payloads and runtime schema introspection, without static documentation or bespoke flags
Understand Anything: AI-Generated Knowledge Graphs for Large Codebases
Understand Anything is an open-source Claude Code plugin that analyzes a codebase with static analysis and multi-agent LLM processing to produce an interactive knowledge graph. The dashboard includes an AI-generated guided tour, per-node summaries, semantic tags, and a dependency path finder between any two nodes.
DESIGN.md: A Markdown Design System File for AI Coding Agents
DESIGN.md is a plain-text design system document that lives in the project root and gives AI coding agents a structured, machine-readable specification of color tokens, typography, spacing, components, and design philosophy. Originally introduced by Google Stitch.
Archon: YAML Workflow Engine for Deterministic AI Coding Agents
Archon is an open-source harness builder for AI coding agents that defines development processes as YAML DAGs, runs each workflow in an isolated Git worktree to prevent merge conflicts, and provides reusable skills so process knowledge is stored in version-controlled files rather than chat logs.
Databases
Explore the essentials of working with databases, including setup, scaling, optimization, and best practices for managing data effectively.
Dolt: Git-style version control for SQL databases
Dolt is a MySQL-compatible SQL database with built-in Git semantics: dolt add, dolt commit, dolt branch, dolt merge, and dolt log. It uses Prolly Trees (content-addressed B-Trees) for efficient versioning. Diffs show cell-level changes rather than raw text, and the full commit history is queryable via system tables.
Powabase: Unified Postgres Backend with Built-in RAG, Embeddings, and Agentic Workflows
Powabase extends Supabase with pgvector, a built-in RAG pipeline, and a visual agentic workflow builder. All relational data and vector embeddings live in the same Postgres instance under the same ACID transaction boundary, eliminating sync bugs between relational and vector stores.
Redash: SQL-First Dashboards for Developers
Redash is an open-source BI tool that connects to PostgreSQL, MySQL, BigQuery, Snowflake, MongoDB, and other data sources, provides a SQL editor with schema browsing and query parameterization, and assembles the results into shareable dashboards with auto-refresh.
MinIO: S3-compatible object storage that runs locally
MinIO is an open-source object storage server that implements the Amazon S3 API. It runs in Docker on a laptop or server, accepts connections from any S3-compatible SDK, and requires no code changes when switching between local development and AWS S3 in production
PostgREST: Turning a PostgreSQL Database Directly into a REST API
PostgREST is a standalone web server that introspects a PostgreSQL schema and generates a complete REST API automatically, using PostgreSQL roles and Row Level Security for authorization instead of application-layer middleware.
Explore more

Guides
Explore our in-depth technical guides and tutorials and learn about scaling apps, observability, DevOps and more.

Questions
Find answers to frequently asked development questions. For information about Better Stack products, explore our docs.

Comparisons
Explore different tools, compare alternatives and find the best software solutions for your specific use case.
Community projects
See the full list of amazing projects on github
Supporting
open-source builders
Supporting the
We are proud to give back to open source and impact makers around the world.
Apply for a discounted non-profit plan at hello@betterstack.com