<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://www.pacyfist.dev/</id><title>pacyfist.dev</title><subtitle>Pacyfist works mainly with C# and TypeScript and blogs about AI, coding, software development, and also his travels!</subtitle> <updated>2026-10-12T21:29:40+00:00</updated> <author> <name>Filip Franik</name> <uri>https://www.pacyfist.dev/</uri> </author><link rel="self" type="application/atom+xml" href="https://www.pacyfist.dev/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://www.pacyfist.dev/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Filip Franik </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>Archinstall Web Server Setup: Hardening a 10-Year NUC</title><link href="https://www.pacyfist.dev/posts/archinstall-web-server-setup/" rel="alternate" type="text/html" title="Archinstall Web Server Setup: Hardening a 10-Year NUC" /><published>2026-10-12T00:00:00+00:00</published> <updated>2026-10-12T00:00:00+00:00</updated> <id>https://www.pacyfist.dev/posts/archinstall-web-server-setup/</id> <content type="text/html" src="https://www.pacyfist.dev/posts/archinstall-web-server-setup/" /> <author> <name>Filip Franik</name> </author> <category term="linux" /> <category term="tooling" /> <summary>Can an old 17-watt box from 2013 with a 1.1 GHz Celeron still run a hardened, encrypted web server in 2026? Yes - if you do not fight the hardware. I had an Intel NUC Kit DCCP847DYE gathering dust under my desk. It has two slow cores, 8 GB of DDR3 memory, and an mSATA SSD. I wanted to turn it into an encrypted, self-hosted web server without exposing my home network to the entire internet. In...</summary> </entry> <entry><title>Scalar Bearer Auth Setup: Where Did My Padlock Go</title><link href="https://www.pacyfist.dev/posts/scalar-bearer-auth-setup/" rel="alternate" type="text/html" title="Scalar Bearer Auth Setup: Where Did My Padlock Go" /><published>2026-09-30T00:00:00+00:00</published> <updated>2026-09-30T00:00:00+00:00</updated> <id>https://www.pacyfist.dev/posts/scalar-bearer-auth-setup/</id> <content type="text/html" src="https://www.pacyfist.dev/posts/scalar-bearer-auth-setup/" /> <author> <name>Filip Franik</name> </author> <category term="dotnet" /> <category term="webapi" /> <summary>I had a nagging itch after migrating a Minimal API to Scalar on http://127.0.0.1:5055: the documentation looked crisp, but clicking “Test Request” on /api/secret failed instantly with an unauthenticated 401 Unauthorized. There was no padlock icon next to the route. There was no “Authorize” button in the header. Even though the endpoint had .RequireAuthorization(), Scalar treated it like a publ...</summary> </entry> <entry><title>ASP.NET Core OpenAPI Migration: Ditching Swashbuckle</title><link href="https://www.pacyfist.dev/posts/aspnet-core-openapi-migration/" rel="alternate" type="text/html" title="ASP.NET Core OpenAPI Migration: Ditching Swashbuckle" /><published>2026-09-29T00:00:00+00:00</published> <updated>2026-10-11T17:00:12+00:00</updated> <id>https://www.pacyfist.dev/posts/aspnet-core-openapi-migration/</id> <content type="text/html" src="https://www.pacyfist.dev/posts/aspnet-core-openapi-migration/" /> <author> <name>Filip Franik</name> </author> <category term="dotnet" /> <category term="architecture" /> <summary>I have a confession to make. When I upgraded my first Web API project to .NET 9 and loaded localhost:5001/swagger in Chrome, I spent twenty minutes checking my reverse proxy config because the browser returned a blank 404. Nothing was wrong with my proxy. The green-and-white Swagger UI dashboard we all relied on for eight years was simply gone. For nearly a decade, running dotnet new webapi q...</summary> </entry> <entry><title>.NET HybridCache Setup: The Multi-Pod Stampede Trap</title><link href="https://www.pacyfist.dev/posts/dotnet-hybridcache-setup/" rel="alternate" type="text/html" title=".NET HybridCache Setup: The Multi-Pod Stampede Trap" /><published>2026-09-28T00:00:00+00:00</published> <updated>2026-10-11T17:00:12+00:00</updated> <id>https://www.pacyfist.dev/posts/dotnet-hybridcache-setup/</id> <content type="text/html" src="https://www.pacyfist.dev/posts/dotnet-hybridcache-setup/" /> <author> <name>Filip Franik</name> </author> <category term="dotnet" /> <category term="architecture" /> <summary>I love distributed caching. I also love when my SQL Server container does not spike to 100% CPU on a Monday morning because fifty parallel requests hit an expired key at 09:14:02. For years, avoiding that spike in .NET meant writing eighty lines of fragile boilerplate. You glued an in-memory cache to a Redis instance, wrapped the call in a SemaphoreSlim dictionary to prevent a thundering herd,...</summary> </entry> <entry><title>SQL Server UUIDv7: Why Guid.CreateVersion7 Still Fragments</title><link href="https://www.pacyfist.dev/posts/sql-server-uuidv7/" rel="alternate" type="text/html" title="SQL Server UUIDv7: Why Guid.CreateVersion7 Still Fragments" /><published>2026-09-27T00:00:00+00:00</published> <updated>2026-10-11T17:00:12+00:00</updated> <id>https://www.pacyfist.dev/posts/sql-server-uuidv7/</id> <content type="text/html" src="https://www.pacyfist.dev/posts/sql-server-uuidv7/" /> <author> <name>Filip Franik</name> </author> <category term="sqlserver" /> <category term="dotnet" /> <summary>Back in February 2025, I wrote about taming the UUID beast and showed how NEWSEQUENTIALID() kept 1,000,000 clustered index rows under 1% fragmentation. But it always came with an annoying catch: SQL Server held the keys, and your C# application had to wait for a database roundtrip just to learn a new entity’s ID. When .NET 9 introduced RFC 9562 support with Guid.CreateVersion7(), it felt like ...</summary> </entry> </feed>
