static site generator

Announcing NetlifySharp

A .NET API client for Netlify.

Netlify is an awesome static site host with tons of developer-friendly features including a comprehensive API. Today I'm announcing NetlifySharp, a new .NET API client for that API that lets you control your Netlify sites from .NET.


Wyam 1.0

Over two years in the making.

After a little over two years of development, I'm thrilled to announce that Wyam 1.0 is now released! Wyam is a .NET static generator that unapologetically places an emphasis on flexibility and extensibility. It's the static generator I wanted two years ago and I'm thrilled that so many have also found it valuable and interesting along the way.


Enabling Application Insights for Static Sites

Azure has a really cool service called Application Insights. It lets you instrument both the server and the client for all kinds of metrics and data. Unfortunately, all the documentation about how to enable it makes a lot of assumptions, like having Visual Studio as part of your tooling. I wanted to turn on Application Insights for a static site that I was hosting on Azure App Server and literally could not find a single guide on how to do so. I finally got it working through trial and error and came up with this set of hacks. Keep in mind, this really is a bit of a hack - I'm sure there's a better way, I just don't know what it is. That said, maybe this will help someone else in the same situation.


What Makes A Static Site?

Exploring the differences between static and dynamic web sites.

Last night The Practical Dev had their periodic #DevDiscuss Twitter chat and the topic was web performance. I brought up static sites as something to consider and then got into a discussion of the benefits and limitations of static site generators. The entire thread was interesting but seemed to hinge partly on one important question: what makes a static site…static? More to the point, what generally accepted criteria can we use to classify a web site as "static" as opposed to "dynamic"? This question got me thinking and I realized that the issue is a little more complicated than it might seem, especially for modern static site generation.


Announcing A New Documentation Experience

Easy to customize API, content/wiki pages, and blog posts in the new Wyam Docs recipe.

When I started working on Wyam about 2 years ago, a primary design goal (probably the primary goal) was to create a general-purpose static generator that could be easily adapted to any sort of content, from the most complicated web site to output that isn't web-based at all. I was frustrated with both the lack of a popular and robust generator in the .NET ecosystem (why should Ruby and Node get all the fun?) and also with the limitations of the generators that do exist on other platforms. Nearly all of them favor strong conventions and patterns and while many are extensible, creating experiences that differ too greatly from what's expected becomes challenging fast (a notable exception to this is Metalsmith, which is similar in spirit to Wyam).


Integrating Wyam Into An ASP.NET MVC Site

I heard you like static sites, so I put some static site in your dynamic site

I've seen an interesting static site use case come up a few times recently where someone wants to use a static generator along with an existing dynamic site. The idea is that they would generate certain resources statically at build-time of the dynamic site and then only rely on the dynamic runtime for pages that really need it. I've long suspected that Wyam would be great in this role, particularly for ASP.NET MVC sites given that it can read the same Razor layout files. I finally got motivated enough to give this a try and will detail how to do it in this blog post. It turns out it's not hard at all and works really well once you've gotten everything set up.


Converting My Blog to Wyam

How I went from compiled to static in less than a day.

I recently launched a new static site generator, and I figured what better test of whether it's ready for widespread use than to convert my entire blog to use it. Given that this blog was originally built with ASP.NET MVC, it should be a good fit for converting over to a Razor-based static site generator. The process was actually easier than I thought it would be and suggests that Wyam is already ready for production use on personal sites, blogs, etc.


Announcing Wyam

A modular static content generator built on Roslyn, Razor, and rainbows.

I am very proud to announce my newest project, Wyam. It's a static site and content generator built from the ground up to be modular and flexible.


A Survey of .NET Static Site Generators

There is a lot of demand and a lot of active development around static site generators. If you're not familiar with them, these tools take markup or other simplified content and turn those resources into a full static website (HTML, CSS, etc.). There are a number of great static site generators out there, and it seems like a new one is released nearly every week. However, for this survey I am going to focus on the state of static site generation in the .NET ecosystem.


open source (18) ASP.NET (15) ASP.NET MVC (14) static site generator (9) programming (8) Azure (7) Wyam (7) Roslyn (7) NuGet (6) devops (5) .NET Compiler Platform (5) Razor (4) personal (4) Vue.js (4) Entity Framework (4) LINQ (4) database (4) KendoUI (4) KendoUI MVC (4) grid (4) csharp (3) scripting (3) meta (3) T4 (3) XML (3) Mono (3) GtkSharp (3) tools (2) Cake (2) msbuild (2) magic strings (2) Azure Cosmos DB (2) Azure Functions (2) LINQ to Entities (2) strings (2) algorithms (2) LINQPad (2) blog (2) CSS (2) export (2) CSV (2) HtmlHelper (2) Entity Framework Code First (2) Nxdb (2) XQuery (2) Blazor (1) WebAssembly (1) Netlify (1) FTP (1) documentation (1) configuration (1) DSL (1) enum (1) stdin (1) stream (1) console (1) cli (1) npm (1) node (1) microdependencies (1) collections (1) concurrent (1) HashSet (1) Twitter (1) Serilog (1) MiniProfiler (1) logging (1) OWIN (1) templating (1) design (1) web (1) JavaScript (1) API (1) IIS (1) debugging (1) LINQ to SQL (1) FluentBootstrap (1) Bootstrap (1) RazorDatabase (1) GitHub (1) AppVeyor (1) fluent interfaces (1) method chaining (1) style (1) conventions (1) PDF (1) Acrobat (1) Excel (1) checkbox (1) postback (1) icon fonts (1) icons (1) SQL (1) SQL Server (1) round robin (1) DotNet (1) Dictionary (1) MultiDictionary (1) data annotations (1) persistence (1) object persistence (1) NiceThreads (1) Threading (1) Monitor (1) ReaderWriterLockSlim (1) locking (1) ILocker (1) networkdays (1) weekdays (1) ButtonPressEvent (1) Context Menu (1) ContextMenuHelper (1) Menu (1) Popup (1) Popup Menu (1) CellRenderer (1) TreeModel (1) TreeView (1) TreeViewColumn (1)