Writing
All blog posts
Technical articles on .NET, distributed systems, Debian packaging, and engineering practice.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.