K Cartlidge

DotNet/Core, Golang, Node, Elixir/Phoenix, Ruby/Rails, Python/Flask, PHP.

DotNet and DotNet Core projects

I've developed with C# since 2001; it's my bread and butter. Most stuff is either enterprise or commercially sensitive, but I do have some open source projects.

My NuGet packages are available here.


Simple, efficient, and tested .Net Core database migrations supporting multiple database technologies (by simple provider plugins - currently MySQL/MariaDB and Postgres).

Source - NuGet


Generate a DotNet (C#/EF Core) data access repository project from a Postgres database.



Implementation of a generic GapBuffer. For it's ideal use cases, this can be up to 1,500 times faster than a List.


Sudoku a Day

It isn't open source, but for a free challenge visit sudoku-a-day.com. As the name implies, there's a new grid every day (plus access to the previous day).

All are guaranteed solvable, and you can also peek at the answer. It's written in C# and every day has it's own unique grid.


Easy argument parsing for .Net Core applications. Uses fluent-style declarations for strongly-typed options (compulsory or not) and boolean flags, and has built-in help text rendering.

Source - NuGet


Extract structure from any text using a generic lexer.

Source - NuGet

Generic Markov chains

Simple pattern 'learning' with Markov chains. After repeated 'repeatable' events, it is able to generate more of those repeatable events that follow a similar frequency pattern. Useful for things like generating English-looking random text or making the best chess move after training across chess game histories.


Interface implementation locator

Fetches all current-assembly implementations of a given interface dynamically without needing full-blown IOC containers.


Mob Time

A mobbing or meeting timer (also fine for Pomodoro) for the Windows desktop. There is also a direct download from the latest Release build within the repository.

Source - Release

Filesystem change checker

A polling-based alternative to the .Net framework's file watchers - this isn’t subject to the double-hit issues caused by programs like Notepad hitting a file twice (once for the content, then again for the file attributes).