Writing

All blog posts

Technical articles on .NET, distributed systems, Debian packaging, and engineering practice.

yt-dlp installation on Debian
yt-dlp Media CLI

How to Install yt-dlp on Debian: A Feature-Rich Audio and Video Downloader

Install the latest yt-dlp, the feature-rich command-line audio and video downloader, on Debian using the unofficial deb.griffo.io APT repository and keep it current.

Read
yt-dlp installation on Ubuntu
yt-dlp Media CLI

How to Install yt-dlp on Ubuntu: A Feature-Rich Audio and Video Downloader

Install the latest yt-dlp, the feature-rich command-line audio and video downloader, on Ubuntu using the unofficial deb.griffo.io APT repository and keep it up to date.

Read
herdr installation on Debian
herdr AI Terminal

How to Install herdr on Debian: A Terminal Workspace Manager for AI Coding Agents

Install the latest herdr, the terminal workspace manager and multiplexer for AI coding agents, on Debian using the unofficial deb.griffo.io APT repository and keep it current.

Read
herdr installation on Ubuntu
herdr AI Terminal

How to Install herdr on Ubuntu: A Terminal Workspace Manager for AI Coding Agents

Install the latest herdr, the terminal workspace manager and multiplexer for AI coding agents, on Ubuntu using the unofficial deb.griffo.io APT repository and keep it up to date.

Read
Forgejo installation on Debian
Git Forgejo Self-Hosting

How to Install Forgejo on Debian: A Self-Hosted Lightweight Git Forge

Install the latest Forgejo, the self-hosted lightweight software forge, on Debian using the unofficial deb.griffo.io APT repository, then start the service and run initial setup.

Read
Forgejo installation on Ubuntu
Git Forgejo Self-Hosting

How to Install Forgejo on Ubuntu: A Self-Hosted Lightweight Git Forge

Install the latest Forgejo, the self-hosted lightweight software forge, on Ubuntu using the unofficial deb.griffo.io APT repository, then start the service and run initial setup.

Read
Oh My Posh installation on Debian
CLI Oh My Posh Shell

How to Install Oh My Posh on Debian: A Prompt Theme Engine for Any Shell

Install the latest Oh My Posh, the customisable prompt theme engine for any shell, on Debian using the unofficial deb.griffo.io APT repository, with themes and shell init.

Read
Oh My Posh installation on Ubuntu
CLI Oh My Posh Shell

How to Install Oh My Posh on Ubuntu: A Prompt Theme Engine for Any Shell

Install the latest Oh My Posh, the customisable prompt theme engine for any shell, on Ubuntu using the unofficial deb.griffo.io APT repository, with themes and shell init.

Read
Fastfetch installation on Debian
CLI Fastfetch System

How to Install Fastfetch on Debian: A Fast, Customizable System Information Tool

Install the latest Fastfetch, the fast and highly customizable system information tool, on Debian using the unofficial deb.griffo.io APT repository for easy updates.

Read
Fastfetch installation on Ubuntu
CLI Fastfetch System

How to Install Fastfetch on Ubuntu: A Fast, Customizable System Information Tool

Install the latest Fastfetch, the fast and highly customizable system information tool, on Ubuntu using the unofficial deb.griffo.io APT repository for easy updates.

Read
DuckDB installation on Debian
Database DuckDB SQL

How to Install DuckDB on Debian: The In-Process SQL OLAP Database

Install the latest DuckDB, the fast in-process SQL OLAP database, on Debian using the unofficial deb.griffo.io APT repository for simple installation and updates.

Read
DuckDB installation on Ubuntu
Database DuckDB SQL

How to Install DuckDB on Ubuntu: The In-Process SQL OLAP Database

Install the latest DuckDB, the fast in-process SQL OLAP database, on Ubuntu using the unofficial deb.griffo.io APT repository for simple installation and updates.

Read
yq installation on Debian
CLI yq YAML

How to Install yq on Debian: A Portable YAML, JSON and XML Processor

Install the latest mikefarah yq, the portable command-line YAML, JSON and XML processor, on Debian using the unofficial deb.griffo.io APT repository for easy updates.

Read
yq installation on Ubuntu
CLI yq YAML

How to Install yq on Ubuntu: A Portable YAML, JSON and XML Processor

Install the latest mikefarah yq, the portable command-line YAML, JSON and XML processor, on Ubuntu using the unofficial deb.griffo.io APT repository for easy updates.

Read
Atuin installation on Debian
CLI Atuin Shell

How to Install Atuin on Debian: Magical Shell History with Sync and Search

Install the latest Atuin, the magical shell history tool with sync, fuzzy search and context, on Debian using the unofficial deb.griffo.io APT repository.

Read
Atuin installation on Ubuntu
CLI Atuin Shell

How to Install Atuin on Ubuntu: Magical Shell History with Sync and Search

Install the latest Atuin, the magical shell history tool with sync, fuzzy search and rich context, on Ubuntu using the unofficial deb.griffo.io APT repository.

Read
Zed installation on Debian
Zed Editor Rust

How to Install Zed on Debian: The High-Performance, Multiplayer Code Editor

Install the latest Zed, the blazing-fast multiplayer code editor written in Rust, on Debian using the unofficial deb.griffo.io APT repository for easy updates.

Read
Zed installation on Ubuntu
Zed Editor Rust

How to Install Zed on Ubuntu: The High-Performance, Multiplayer Code Editor

Install the latest Zed, the blazing-fast multiplayer code editor written in Rust, on Ubuntu using the unofficial deb.griffo.io APT repository for painless updates.

Read
Ghostty installation on Debian
Terminal Ghostty Emulator

How to Install Ghostty on Debian: A Fast, GPU-Accelerated Terminal Emulator

Install the latest Ghostty, the fast, feature-rich, GPU-accelerated terminal emulator, on Debian with apt using the unofficial deb.griffo.io repository. A full step-by-step guide.

Read
Ghostty installation on Ubuntu
Terminal Ghostty Emulator

How to Install Ghostty on Ubuntu: A Fast, GPU-Accelerated Terminal Emulator

Install the latest Ghostty, the fast, feature-rich, GPU-accelerated terminal emulator, on Ubuntu with apt via the unofficial deb.griffo.io repository. A clear step-by-step walkthrough.

Read
Jujutsu installation on Debian
VCS Jujutsu Git

How to Install Jujutsu on Debian: A Git-Compatible Version Control System

Install the latest Jujutsu (jj), the Git-compatible version control system that is simple and powerful, on Debian with apt using the unofficial deb.griffo.io repository. Full guide.

Read
Jujutsu installation on Ubuntu
VCS Jujutsu Git

How to Install Jujutsu on Ubuntu: A Git-Compatible Version Control System

Install the latest Jujutsu (jj), the Git-compatible version control system that is simple yet powerful, on Ubuntu with apt via the unofficial deb.griffo.io repository. Step by step.

Read
just installation on Debian
CLI just Build

How to Install just on Debian: A Handy Command Runner for Your Projects

Install the latest just, the ergonomic command runner that replaces Makefiles for project tasks, on Debian with apt using the unofficial deb.griffo.io repository. Full guide.

Read
just installation on Ubuntu
CLI just Build

How to Install just on Ubuntu: A Handy Command Runner for Your Projects

Install the latest just, the ergonomic command runner that saves and runs project tasks, on Ubuntu with apt via the unofficial deb.griffo.io repository. A step-by-step guide.

Read
Nushell installation on Debian
Shell Nushell CLI

How to Install Nushell on Debian: A Shell Built Around Structured Data

Install the latest Nushell, the modern shell that treats data as structured tables, on Debian with apt using the unofficial deb.griffo.io repository. Full step-by-step guide.

Read
Nushell installation on Ubuntu
Shell Nushell CLI

How to Install Nushell on Ubuntu: A Shell Built Around Structured Data

Install the latest Nushell, the modern shell that treats output as structured tables, on Ubuntu with apt via the unofficial deb.griffo.io repository. A complete walkthrough.

Read
k9s installation on Debian
Kubernetes k9s TUI

How to Install k9s on Debian: The Terminal UI for Kubernetes

Install the latest k9s, the terminal UI to manage and observe your Kubernetes clusters, on Debian with apt using the unofficial deb.griffo.io repository. Step-by-step guide.

Read
k9s installation on Ubuntu
Kubernetes k9s TUI

How to Install k9s on Ubuntu: The Terminal UI for Kubernetes

Install the latest k9s, the terminal UI for managing Kubernetes clusters, on Ubuntu with apt via the unofficial deb.griffo.io repository. A clear step-by-step walkthrough.

Read
Lazydocker installation on Debian
Docker Lazydocker TUI

How to Install Lazydocker on Debian: A Simple Terminal UI for Docker

Install the latest Lazydocker, the simple terminal UI for Docker and docker-compose, on Debian using the unofficial deb.griffo.io APT repository and keep it updated with apt.

Read
Lazydocker installation on Ubuntu
Docker Lazydocker TUI

How to Install Lazydocker on Ubuntu: A Simple Terminal UI for Docker

Install the latest Lazydocker, the simple terminal UI for Docker and docker-compose, on Ubuntu using the unofficial deb.griffo.io APT repository and keep it updated with apt.

Read
Zellij installation on Debian
CLI Zellij Terminal

How to Install Zellij on Debian: The Terminal Workspace and Multiplexer

Install the latest Zellij, the terminal workspace and multiplexer with batteries included, on Debian using the unofficial deb.griffo.io APT repository and keep it up to date.

Read
Zellij installation on Ubuntu
CLI Zellij Terminal

How to Install Zellij on Ubuntu: The Terminal Workspace and Multiplexer

Install the latest Zellij, the terminal workspace and multiplexer with batteries included, on Ubuntu using the unofficial deb.griffo.io APT repository and keep it up to date.

Read
Helix installation on Debian
Helix Editor Rust

How to Install Helix on Debian: The Post-Modern Modal Text Editor

Install the latest Helix, the post-modern modal text editor with built-in LSP and tree-sitter, on Debian using the unofficial deb.griffo.io APT repository and keep it current.

Read
Helix installation on Ubuntu
Helix Editor Rust

How to Install Helix on Ubuntu: The Post-Modern Modal Text Editor

Install the latest Helix, the post-modern modal text editor with built-in LSP and tree-sitter, on Ubuntu using the unofficial deb.griffo.io APT repository and keep it current.

Read
Yazi installation on Debian
CLI Yazi File Manager

How to Install Yazi on Debian: The Blazing Fast Terminal File Manager

Install the latest Yazi, the blazing-fast terminal file manager written in Rust, on Debian using the unofficial deb.griffo.io APT repository and keep it current with apt.

Read
Yazi installation on Ubuntu
CLI Yazi File Manager

How to Install Yazi on Ubuntu: The Blazing Fast Terminal File Manager

Install the latest Yazi, the blazing-fast terminal file manager written in Rust, on Ubuntu using the unofficial deb.griffo.io APT repository and keep it updated with apt.

Read
Zig installation on Debian
Zig Systems Programming

How to Install Zig on Debian: The General-Purpose Systems Programming Language

Install the latest Zig, the modern general-purpose systems programming language, on Debian using the unofficial deb.griffo.io APT repository for an always up-to-date toolchain.

Read
Zig installation on Ubuntu
Zig Systems Programming

How to Install Zig on Ubuntu: The General-Purpose Systems Programming Language

Install the latest Zig, the modern general-purpose systems programming language, on Ubuntu using the unofficial deb.griffo.io APT repository for an always current toolchain.

Read
Lazygit installation on Debian
Git Lazygit TUI

How to Install Lazygit on Debian: A Simple Terminal UI for Git

Learn how to install the latest Lazygit, the simple terminal UI for Git commands, on Debian using the unofficial deb.griffo.io APT repository for fast, keyboard-driven version control.

Read
Lazygit installation on Ubuntu
Git Lazygit TUI

How to Install Lazygit on Ubuntu: A Simple Terminal UI for Git

Learn how to install the latest Lazygit, the simple terminal UI for Git commands, on Ubuntu using the unofficial deb.griffo.io APT repository for fast, keyboard-driven version control.

Read
Starship installation on Debian
CLI Starship Shell

How to Install Starship on Debian: The Minimal, Blazing-Fast Shell Prompt

Learn how to install the latest Starship, the minimal, blazing-fast and customisable prompt for any shell, on Debian using the unofficial deb.griffo.io APT repository.

Read
Starship installation on Ubuntu
CLI Starship Shell

How to Install Starship on Ubuntu: The Minimal, Blazing-Fast Shell Prompt

Learn how to install the latest Starship, the minimal, blazing-fast and customisable prompt for any shell, on Ubuntu using the unofficial deb.griffo.io APT repository.

Read
Deno installation on Debian
JavaScript Deno Runtime

How to Install Deno on Debian: The Secure JavaScript and TypeScript Runtime

Learn how to install the latest Deno, the secure runtime for JavaScript and TypeScript with built-in tooling, on Debian using the unofficial deb.griffo.io APT repository.

Read
Deno installation on Ubuntu
JavaScript Deno Runtime

How to Install Deno on Ubuntu: The Secure JavaScript and TypeScript Runtime

Learn how to install the latest Deno, the secure runtime for JavaScript and TypeScript with built-in tooling, on Ubuntu using the unofficial deb.griffo.io APT repository.

Read
Bun installation on Debian
JavaScript Bun Runtime

How to Install Bun on Debian: The Fast All-in-One JavaScript Runtime

Learn how to install the latest Bun, the fast all-in-one JavaScript runtime, bundler, test runner and package manager, on Debian using the unofficial deb.griffo.io APT repository.

Read
Bun installation on Ubuntu
JavaScript Bun Runtime

How to Install Bun on Ubuntu: The Fast All-in-One JavaScript Runtime

Learn how to install the latest Bun, the fast all-in-one JavaScript runtime, package manager, bundler and test runner, on Ubuntu using the unofficial deb.griffo.io APT repository.

Read
eza installation on Debian
CLI eza Productivity

How to Install eza on Debian: A Modern Replacement for ls

Learn how to install the latest eza, the modern, maintained replacement for ls with colours, icons and Git integration, on Debian using the unofficial deb.griffo.io APT repository.

Read
eza installation on Ubuntu
CLI eza Productivity

How to Install eza on Ubuntu: A Modern Replacement for ls

Learn how to install the latest eza, the modern, maintained replacement for ls with icons, colours and Git integration, on Ubuntu using the unofficial deb.griffo.io APT repository.

Read
zoxide installation on Debian
CLI zoxide Productivity

How to Install zoxide on Debian: A Smarter cd Command for Your Terminal

Install the latest zoxide, the smarter cd command that learns your habits, on Debian using the unofficial deb.griffo.io APT repository, including shell init and setup.

Read
zoxide installation on Ubuntu
CLI zoxide Productivity

How to Install zoxide on Ubuntu: A Smarter cd Command for Your Terminal

Install the latest zoxide, the smarter cd command that learns your habits, on Ubuntu using the unofficial deb.griffo.io APT repository, including shell init and setup.

Read
Ruff installation on Debian
Python Ruff Linter

How to Install Ruff on Debian: The Extremely Fast Python Linter and Formatter

Install the latest Ruff, the extremely fast Rust-based Python linter and formatter, on Debian using the unofficial deb.griffo.io APT repository and keep it up to date.

Read
Ruff installation on Ubuntu
Python Ruff Linter

How to Install Ruff on Ubuntu: The Extremely Fast Python Linter and Formatter

Install the latest Ruff, the extremely fast Rust-based Python linter and formatter, on Ubuntu using the unofficial deb.griffo.io APT repository and keep it current.

Read
fzf installation on Debian
CLI fzf Productivity

How to Install fzf on Debian: The Command-Line Fuzzy Finder

Install the latest fzf, the blazing-fast command-line fuzzy finder, on Debian using the unofficial deb.griffo.io APT repository, with shell key-bindings and completion.

Read
fzf installation on Ubuntu
CLI fzf Productivity

How to Install fzf on Ubuntu: The Command-Line Fuzzy Finder

Install the latest fzf, the blazing-fast command-line fuzzy finder, on Ubuntu using the unofficial deb.griffo.io APT repository, with shell key-bindings and completion.

Read
uv installation on Debian
Python uv Package Manager

How to Install uv on Debian: The Blazing-Fast Python Package Manager

Install the latest uv, the extremely fast Rust-based Python package and project manager, on Debian using the unofficial deb.griffo.io APT repository and keep it current.

Read
uv installation on Ubuntu
Python uv Package Manager

How to Install uv on Ubuntu: The Blazing-Fast Python Package Manager

Install the latest uv, the extremely fast Rust-based Python package and project manager, on Ubuntu using the unofficial deb.griffo.io APT repository and keep it up to date.

Read
Neovim installation on Debian
Neovim Editor Vim

How to Install Neovim on Debian: The Hyperextensible Vim-Based Editor

Install the latest Neovim, the hyperextensible Vim-based text editor, on Debian using the unofficial deb.griffo.io APT repository for a modern, always up-to-date nvim.

Read
Neovim installation on Ubuntu
Neovim Editor Vim

How to Install Neovim on Ubuntu: The Hyperextensible Vim-Based Editor

Install the latest Neovim, the hyperextensible Vim-based text editor, on Ubuntu using the unofficial deb.griffo.io APT repository for a modern, always current nvim.

Read
zunit — a Zig test runner with lifecycle hooks and JUnit XML output
Zig Testing Open Source

zunit: A Zig Test Runner with Lifecycle Hooks, JUnit XML, and CI-Ready Reporting

Zig ships a minimalist built-in test runner — no beforeAll, no afterEach, no CI-friendly report. zunit is a drop-in replacement that adds the full test lifecycle, multi-binary consolidation, and JUnit XML output for GitHub Actions, Jenkins, and GitLab.

Read
PostgreSQL with SSL on Debian

Self-Hosting PostgreSQL in Debian with SSL for Public Exposure

A comprehensive guide on how to set up, secure, and expose a PostgreSQL database server on Debian using SSL certificates for secure remote connections.

Read
Multiple Authentication Methods in .NET

The Definitive Guide to Using Multiple Authentication Methods in .NET

Learn how to implement and combine different authentication schemes in your .NET applications including JWT Bearer, API Key, and Cookie authentication.

Read
YARP Response Transformation

How to Replace YARP Responses: Transforming Status Codes for Better Error Handling

Learn how to intercept and transform responses from upstream services using YARP (Yet Another Reverse Proxy) to create more semantically correct status codes and improve error handling in your microservices architecture.

Read
Debian Repository Hosting

The Ultimate Guide to Self-Hosting a Debian Repository

Learn how to set up and maintain your own Debian repository for multiple distributions using reprepro, with real-world examples from my personal setup.

Read
Debian Packaging Process

The Ultimate Guide to Creating Debian Packages

Learn how to create and maintain Debian packages for multiple distributions using Docker, with real-world automation techniques and best practices.

Read
MCP Server in .NET with PostgreSQL

Building a Production-Ready MCP Server in .NET - A PostgreSQL Memory Example

Learn how to implement a practical Model Context Protocol (MCP) server in .NET using PostgreSQL with pgvector for AI memory storage, featuring a complete working example that goes beyond simple demos.

Read
.NET Configuration Providers

Building Custom Configuration Providers in .NET

Learn how to extend .NET's configuration system by creating custom configuration providers, with a practical example using the Environment File Provider.

Read