Skip to content

Read Later Articles

AI & ML

Getting Started

Prompt Engineering

ChatGPT

LLMs

Misc

Guides, Books, and Courses

Architecture and System Design Articles

Architecture Decision Records (ADR)

Distributed Systems

Logging, Monitoring, and Tracing

  • Monitoring Self-Hosted Services #grafana #loki #prometheus #promtail #logs #node-explorer #cAdvisor(06/07/2023)
  • Monitoring is a Pain #logging #tracing(06/27/2023)
  • An Introduction to Microservices Monitoring—Strategies, Tools, and Key Concepts (03/12/2024)

    This document is an introduction to monitoring microservices. It explains why monitoring microservices is important, key concepts, challenges, tools, and how to get started with microservices monitoring.

    Key points include:

    1. Importance of monitoring microservices: It improves user experience, availability, cost savings, and observability.

    2. Key concepts: Metrics like latency, response time, error rate, resource utilization, and SLO/SLI are important. Data collected for monitoring includes logs, metrics, and traces.

    3. Challenges: Tracking service dependencies, root cause analysis, tech stack diversity, scalability, and implementation complexity are some of the challenges in microservices monitoring.

    4. Tools: OpenTelemetry, InfluxDB, Grafana, Telegraf, and K6 are some of the tools used for microservices monitoring.

    5. Getting started: Determine monitoring strategy and requirements, select tools, and implement and integrate them into your application architecture.

Low Level

Patterns

A & SD Misc

Tools

Bash

Build your own X

Business / Startup Articles

Compilers, Interpreters, Programming Languages

LLVM

Virtual Machines

Interpreters

C/I/P Misc

Containers (Docker, Podman, etc.)

Databases

This article discusses the benefits of using SQLite as a database solution for web applications. It highlights several advantages of SQLite:

  • Zero Latency: SQLite's single-file architecture results in zero latency, reducing the "n+1 problem" and making query optimization less critical.
  • One Less Service: SQLite is embedded within your application, eliminating the need for an external database service, simplifying your architecture, and reducing costs.
  • Multi-Instance Replication: Tools like LiteFS allow transparent replication of SQLite databases, making it suitable for applications that require multiple instances.
  • Database Size: SQLite is capable of handling massive databases, and for most web developers, database size is not a primary concern.
  • Development and Testing: SQLite's simplicity facilitates development and testing, as you can easily run multiple instances of the same app and create isolated test databases.

The article acknowledges some weaknesses of SQLite:

  • Lack of Subscriptions: SQLite does not support subscriptions, which might be limiting for certain real-time use cases.
  • Connecting from External Clients: Connecting to SQLite from external clients can be challenging, requiring workarounds in some cases.
  • Lack of Plugins: SQLite doesn't support plugins like TimescaleDB for Postgres, limiting its suitability for specific use cases.
  • No Enum Support: SQLite does not support enums, which can be inconvenient when enforcing specific values for a column.

In conclusion, the article recommends SQLite for the majority of web developers due to its performance, simplicity, and cost benefits. While it's not a one-size-fits-all solution, it's worth considering for many applications.

Data Structures

Dev Tools

Dotnet (C# / F#)

eBPF

Elixir

Game Dev

General Programming

Go

Go Newsletters and News Aggregators

  • Golang News

    Aggregates the latest news about Go from various sources.

Learning Go

Example Code and Projects in Go

  • Wild Workouts Go DDD Example

    A project that demonstrates how to build a web application using Go and Domain-Driven Design (DDD) principles.

Home Lab

Infrastructure

Ansible

Linux

Linux Performance

Linux Networking

Personal Growth

Career

Investing

Management and Leadership

Project Management

Python

Raspberry Pi

Rust

Architecture and Design in Rust

Blogs

Actors

AI / ML

Concurrency (Async, Tokio, Streaming, etc.)

Benchmarking

Build your own X in Rust

Containers

Rust Container Cheat Sheet

Data Structures in Rust

Database

Distributed Computing

Rust Software Design

Error Handling

GUI and TUI

Learning Rust

Rust Logging, Tracing, and Profiling

Rust Networking

Rust Parsing

Rust Performance

Rust State Machines

Rust Web Development and Frameworks

Rust Tools

Why Rust?

Security

Software Design

Systemd

Web Development

Documenting APIs

Web Development Tools

UI

Writing and Blogging