Writing

All blog posts

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

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
fzf Command-Line Fuzzy Finder Installation on Debian
fzf Debian Linux

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

Learn how to install the latest version of fzf, a powerful command-line fuzzy finder written in Go, on Debian using the unofficial debian.griffo.io repository.

Read
eza Modern ls Replacement Installation on Debian
eza Debian Linux

How to Install Updated eza on Debian: Modern ls Replacement

Learn how to install the latest version of eza, a modern and feature-rich replacement for the ls command, on Debian using the unofficial debian.griffo.io repository.

Read
uv Python Package Manager Installation on Debian
Python uv Debian

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

Learn how to easily install uv, the extremely fast Python package and project manager written in Rust, on Debian using the unofficial debian.griffo.io repository.

Read
Zig Programming Language Installation on Debian
Zig Debian Linux

How to Install Zig on Debian: The Easy Way with debian.griffo.io

Learn how to easily install Zig programming language on Debian using the unofficial debian.griffo.io repository, with both stable and nightly builds available.

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