I’ve written a lot of code over the years. Some of it is good.
Here are my GitHub details:
Here are more details on the significant stuff.
This is the library I have the most work into. Denina is a scripting engine meant to be embedded into a CMS. It’s gotten some usage in the Episerver community, and more in the Umbraco community.
- Embedding an RSS Feed with Episerver Denina Block. A two-minute video that shows the general idea.
- Wiki Documentation. There are about 12,000 words of doc out here.
- Editorial Scripting in CMS. The 2015 blog post that lead to Denina’s creation.
- The Promise and Peril of Editorial Scripting. A 45-minute conference talk at Umbraco’s event in 2019. It demonstrates the amazing Umbraco integration (written by someone else).
This is a library to make working with static HTML easier in Episerver. It provides three things:
- A block type to embed HTML
- A media type to extract fragments of markup from uploaded HTML files
- A media type to combine all the resources needed for a fully self-contained client app into a single deployable “app file” that editors can simply drag onto the page (here’s a video of this)
For each method, a framework is provided to bootstrap all associated resources (JS and CSS; on-site or remote) and inject them into the page. For options #2 and #3 above, front-end developers could work on code locally, then simply drag it into an Episerver site and let editors easily inject all the necessary resources into a page.
The result is, hopefully, a toolkit to make front-end developers very happy when working with Episerver, and something that provides the ability to blur the line between managed content and static HTML in a responsible, manageable, repeatable way.
When working with URL redirection, I got interested in the concept of URL equality. How do you determine if two URLs are equal?
The real “value” of a URL is the resource it responds with. And two URLs can respond with the same resource while differing in:
- Querystring parameters (both number and order)
- Presence or absence of slashes
- and more...
This library will normalize a URL in several configurable ways, allowing you to compare them to test for equality, or store them in a more standard form.
Poor Man's Code Editor
This is an example of using a
textarea element that:
- Sort of styles it like a code editor
- Catches tabs and converts them to four (4) spaces
- Duplicates leading spaces from the last line
- Auto-expands to input
It’s not sophisticated, but if you need a code-ish editor in a place where you can’t or don’t want to pull in anything more complicated, it’s handy.
This is a C# class that will retrieve a bunch of records from Airtable and convert them to POCOs. It reflects the class definition and applies Airtable data based on designated attributes. It has an event model that allows you to modify the data prior to object population, and respond to conversion failures.
While designed for Airtable, it’s a handy reference for a lot of problems you’d find when auto-populating any data in C#. There are a lot of patterns in here that are applicable to anything (swap Airtable out for any other data resouce...)
I sent this to Airtable, and they tweeted it from their account at one point. I use it on this site, to retrieve data for The Interesting List.
This was an afternoon project that I did for a challenge and had mixed results with. It’s a C# implementation of Emmet, the HTML code expansion tool that’s built into some code editors.
I wanted something that would run inside the context of C#. The README shows what I implemented.
I put 3-4 hours into this, but it might be handy for some applications. I think I did this for some Denina implementation. I keep meaning to come back to it.