Skip to content

Instantly share code, notes, and snippets.


Dave Glick daveaglick

View GitHub Profile
daveaglick /
Last active May 15, 2021
Statiq Contributor Agreement

Contributor Agreement - Individual Contributor Non-Exclusive License Agreement

Thank you for your interest in contributing to Statiq ("We" or "Us").

The purpose of this contributor agreement ("Agreement") is to clarify and document the rights granted by contributors to Us.

How to use this Contributor Agreement

If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in the entire work of authorship, any other author of the Contribution should also sign this – in any event, please contact Us at

daveaglick / StringStream.cs
Last active Jan 7, 2021
Sample StringStream Implementation
View StringStream.cs
public class StringStream : Stream
private const int DefaultBufferCharCount = 256; // The number of characters to buffer at a time
private readonly Encoding _encoding;
private readonly int _bufferCharCount;
private Memory<byte> _outputBuffer;
private Encoder _encoder;
private ReadOnlyMemory<char> _pendingSource;
private Memory<byte> _pendingOutput;
daveaglick / ChangeLevelLoggerProvider.cs
Created Nov 20, 2020
Intercepting log messages with a wrapping logger provider
View ChangeLevelLoggerProvider.cs
public class ChangeLevelLoggerProvider : InterceptingLoggerProvider
private readonly Func<LogLevel, LogLevel> _changeLevel;
public ChangeLevelLoggerProvider(ILoggerProvider provider, Func<LogLevel, LogLevel> changeLevel)
: base(provider)
_changeLevel = changeLevel ?? throw new ArgumentNullException(nameof(changeLevel));
View abomination.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
namespace DocumentQuery
View feedly.opml
<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
<title>Dave subscriptions in feedly Cloud</title>
<outline text="Development" title="Development">
<outline type="rss" text="Scott Hanselman" title="Scott Hanselman" xmlUrl="" htmlUrl=""/>
<outline type="rss" text="Cetus" title="Cetus" xmlUrl="" htmlUrl=""/>
daveaglick / changeconfig.cs
Created Aug 22, 2017
Change config file at runtime
View changeconfig.cs
// Set app.config -
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"C:\new.config");
.GetField("s_initState", BindingFlags.NonPublic | BindingFlags.Static)
.SetValue(null, 0);
.GetField("s_configSystem", BindingFlags.NonPublic | BindingFlags.Static)
.SetValue(null, null);
.Where(x => x.FullName == "System.Configuration.ClientConfigPaths")
daveaglick / refextensions.cs
Created Aug 16, 2017
An example use case of ref extensions for immutable objects
View refextensions.cs
using System;
public class Program
public void Main()
Foo foo = new Foo();
// Update with method chaining
// and self assignment,

Keybase proof

I hereby claim:

  • I am daveaglick on github.
  • I am daveaglick ( on keybase.
  • I have a public key whose fingerprint is 20E2 FB65 377E D104 FD1C CE61 E0DE 5630 92FE 2979

To claim this, I am signing this object: