Discover the latest posts

Search across summaries and tags to find your next read.

LargeFileViewer โ€” inspect huge files without loading them into memory

When working with large datasets, I often need a reliable large file viewer to dig through filesโ€”XML, JSON, CSVโ€”that quickly grow into hundreds of megabytes or even gigabytes. At that scale, most tools start to fall apart. Editors freeze, search becomes unreliable, and some applications simply refuse to open a 1 GB file at all.

Iโ€™ve occasionally used LTFViewer.exe for this, which handles large files reasonably well. But I tend to prefer command-line toolingโ€”especially for quick inspection, piping, and integration into workflows.

So instead of adapting my workflow to existing tools, I built a small one tailored to how I actually work.

LargeFileViewer is built on a different premise:

You donโ€™t need the whole file. You only need what youโ€™re looking at.

Automated RBAC on Azure SQL โ€” Using Azure Policy to Eliminate Manual Access Management

In most teams Iโ€™ve worked with, the real problem isnโ€™t provisioning an Azure SQL database โ€” itโ€™s access. Getting RBAC and Entra-based permissions set up correctly is where things break down. Admins are understandably reluctant to grant the required rights broadly, and standard pipelines typically cannot assign SQL role memberships automatically.

When that friction isnโ€™t resolved, teams tend to fall back to what does work: connection strings with embedded secrets. Itโ€™s faster, but it bypasses proper identity and access controls entirely.

Why Agentic Programming Changed the Way I Build Software

Over the past few months, I've been deeply immersed in agentic programming โ€” working with AI-assisted tooling: primarily ChatGPT (including Codex) and GitHub Copilot.

The impact has been substantial. Not incremental. Structural.

Integration Testing JWT-Protected APIs with Aspire in .NET

Most tutorials on JWT authentication stop at "add AddJwtBearer() and configure the options." But the moment you need integration testing across multiple services behind bearer tokens, the configuration plumbing gets painful: every service needs the same signing key, the same issuer, the same audience, and the test project needs to mint tokens and discover service endpoints. In this article we'll look at a .NET Aspire playground that solves all of this with a single shared development JWT authority โ€” and takes it a step further by running the test project inside the Aspire orchestrator so every test appears as a traced span in the dashboard.

LoggerMessage Part 2: Instance Methods and Automatic Exception Handling

In the previous article we explored how the LoggerMessage attribute uses source generators to create high-performance logging code via static extension methods. That approach works great for shared log methods, but it requires you to pass the ILogger instance on every call. In this follow-up we'll look at two features that reduce boilerplate even further: non-static partial methods that access the logger from the primary constructor, and automatic exception recognition.