What I Care About
I like software that is simple without being simplistic: APIs that are clear, interfaces that are inclusive, systems that can evolve, and code that the next developer can understand without a heroic amount of archaeology.
TerraPDF grew from that same point of view. It is built around a fluent API, practical document layout, and a zero-dependency C# implementation that developers can understand, ship, and trust.
TerraPDF
I created TerraPDF to make professional PDF generation in .NET feel direct and dependable. Now at v2.0, it generates invoices, reports, contracts, and certificates from a fluent, code-first API — with tables, images, an automatic table of contents, headers and footers with page numbering, hyperlinks and bookmarks, Code128 barcodes and QR codes, AES-256 encryption, and custom TrueType font embedding with full Unicode support (including Devanagari text shaping). It runs on .NET 8, 9, and 10 with zero dependencies and no native binaries.
You can explore the library at terrapdf.com, install it from NuGet, or view the source on GitHub.
TerraFluent
TerraFluent grew out of TerraPDF: a family of zero-dependency .NET reporting libraries that produce professional documents in three formats from a single, unified fluent API. It ships as three NuGet packages — TerraFluent.Pdf.Reporting (a pure managed C# PDF engine), TerraFluent.Html.Reporting (paginated, print-ready HTML), and TerraFluent.Docx.Reporting (native Open XML Word documents).
Across the suite you get advanced table layouts with merged cells and repeating headers, native barcodes and QR codes, charts and vector graphics, AES-256 encryption for PDF, smart pagination, and streaming async APIs — running cross-platform on Windows, Linux, macOS, containers, and serverless. Learn more at terrafluent.dev or install it from NuGet.
Areas I Write About
PDF, DOCX & HTML Reporting
Zero-dependency document generation with TerraPDF and TerraFluent — layout, encryption, barcodes, and fluent API design.
ASP.NET Core and APIs
Minimal APIs, authentication, OpenAPI, Swagger, TLS, and practical backend patterns.
Architecture and Clean Code
Readable C#, maintainable systems, sensible boundaries, and code quality that holds up over time.
Frontend and Design Systems
Fluent 2, responsive layouts, consistent UI, and user experiences that feel polished and purposeful.
Performance and Accessibility
Fast pages, semantic HTML, inclusive design, and the small details that make the web better for everyone.
Developer Tooling and Workflows
CLI tools, automation, CI/CD, GitHub Actions, and optimizing the development experience.
Why This Blog Exists
This site is where I collect notes, tutorials, experiments, and opinions from the engineering work I care about. Some posts are practical guides. Some are reflections on developer life. Some explore emerging tools like AI and how they fit into everyday work.
The goal is straightforward: share useful context, make technical ideas easier to approach, and leave behind examples that another developer can actually use.