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

Info

This has full blown training resources. Slide decks, videos, you name it. And they are ridiculously thorough.

image

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

Home Lab

Infrastructure

Ansible

:::info

This ansible playbook has some cool tasks that show how to copy, unarchive, restart, etc.

:::

Networking

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

Info

Using Tokio and Rayon together

Info

Contains info on the following: streaming, channels, hashing, circular-buffers, cross-beam, mpsc, flume, ringbuf, rtrb, lock-free-ring-buffers

Benchmarking

Build your own X in Rust

Info

Contains info on the following: tdd, koans

Info

Contains info on the following: mocks, errors, api, axum, tdd And video: Rust HTTP API with TDD Workshop

Containers

Rust Container Cheat Sheet

Data Structures in Rust

Database

Distributed Computing

Rust Software Design

Error Handling

GUI and TUI

Learning Rust

Info

This is the Rust course used by the Android team at Google. It provides you the material to quickly teach Rust.

Info

Cool site that breaks down features of Rust into assembly and explains it. It also does the same for networking protocols, 5G, LTE, and other protocols.

Rust Logging, Tracing, and Profiling

Info

Contains info on the following: profiling, flamegraph, perf, DHAT

Rust Networking

Info

Short article about the site Protohackers, which hosts small challenges to help you learn about network protocols

Info

This article shows examples of how to use Kernel features to send messages via UDP faster with socket2's sendmsg and iovec.

Rust Parsing

Rust Performance

Rust State Machines

Rust Web Development and Frameworks

Rust Tools

Why Rust?

Security

Software Design

Systemd

Web Development

Documenting APIs

UI

Writing and Blogging