Skip to content

Instantly share code, notes, and snippets.

View davidfowl's full-sized avatar

David Fowler davidfowl

View GitHub Profile
@davidfowl
davidfowl / fastlinkedlist.cs
Created March 30, 2014 23:07
Specialized lock free linked list with 2 operations, Add and GetListAndClear. Useful for implementing batching.
public class FastLinkedList<T>
{
private Node Head;
public void Add(T value)
{
var node = new Node();
node.Value = value;
while (true)
@davidfowl
davidfowl / NowinServerFactory.cs
Created May 25, 2014 00:34
Nowin on ASP.NET vNext
using System;
using System.Collections.Generic;
using System.Net;
using System.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting.Server;
using Microsoft.AspNet.Owin;
using Microsoft.Framework.ConfigurationModel;
namespace Nowin.vNext
using System;
using System.Linq;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.Versioning;
using System.Text;
using Microsoft.Framework.Runtime;
using System.IO;
using NuGet;
@davidfowl
davidfowl / AzureStreamingLoggerProvider.cs
Created November 16, 2014 07:25
AzureStreamingLoggerProvider
public class AzureStreamingLoggerProvider : ILoggerProvider
{
public ILogger Create(string name)
{
return new AzureLogger(name);
}
private class AzureLogger : ILogger
{
private readonly string _name;
@davidfowl
davidfowl / inferme.cs
Created February 9, 2015 04:59
C# type inference
public static class MyClass
{
public static void DoSomething<T>(Func<int, T, int> call)
{
}
public static void Example()
{
// This fails
Warning: FindPackagesById: System.Runtime.Handles
Error getting response stream (ReadDone1): ReceiveFailure
GET https://nuget.org/api/v2/FindPackagesById()?Id='System.Runtime.Handles'.
Warning: FindPackagesById: System.Diagnostics.Process
Error getting response stream (ReadDone1): ReceiveFailure
GET https://nuget.org/api/v2/FindPackagesById()?Id='System.Diagnostics.Process '.
Warning: FindPackagesById: System.Reflection.Primitives
Error getting response stream (ReadDone1): ReceiveFailure
GET https://nuget.org/api/v2/FindPackagesById()?Id='System.Reflection.Primitiv es'.
Warning: FindPackagesById: System.IO.FileSystem.Primitives
@davidfowl
davidfowl / 0_reuse_code.js
Last active August 29, 2015 14:15
Here are some things you can do with Gists in GistBox.
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console
@davidfowl
davidfowl / gist:0fc85f3215adf4eab294
Created May 19, 2015 06:15
project structure DSL in C# 6.0
public class Program
{
public void Main()
{
var solution = new Directory
{
["global.json"] = new JObject
{
["projects"] = new JArray { "src", "test" }
},
@davidfowl
davidfowl / UseMapMiddleware.cs
Created August 12, 2015 05:03
Middleware that rejoins the parent pipeline
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Http;
namespace WebApplication58
{
public class MapUseMiddleware
@davidfowl
davidfowl / loadcontextredux.txt
Last active August 29, 2015 14:27
LoadContext strikes again
A (project) -> B (package)
(build)-> CustomCompiler (project) (build)-> FSharpCompiler (project) -> System.Runtime (package)
public interface ILoadContextProvider {
IAssemblyLoadContext GetLoadContext(Project project, FrameworkName targetFramework);
}
var loadContextProvider = ...
Compile(A)