Skip to content
David Cumps

Open-source contributions

  • Open source
  • Since 2014

Some of my own work is open source, from OutlookGnuPG below to the libraries I published under the Exira name and for the Flemish base registries. Since 2014 I’ve also sent fixes and features upstream to the open-source projects I use in my work, and nearly all of it was merged.

OutlookGnuPG. In 2009 no GPG plugin supported Outlook 2007, so I wrote one: signing, encrypting, verifying and decrypting mail from the Outlook ribbon, on top of the GnuPG command line. When I no longer had time to maintain it I released the source, and Philippe Teuwen and Thierry Walrant carried it on from my 1.0.8 release as OutlookGnuPG on GitHub under the GPLv3, adding Exchange address support, GnuPG 2 support, an installer and a long list of fixes.

Akka.NET. Exira’s rewrite ran on Akka.NET and Akka.Persistence, so in 2023 I put time into the persistence plugins it depended on. In Akka.Persistence.Sql I moved the build to central package management, renamed the project from its Linq2Db roots to Akka.Persistence.Sql, upgraded it to linq2db 5 and Npgsql 7, added ReSharper inspection and cleanup targets to the build, and worked on support for databases that store timestamps as DateTime or long. For Akka.Persistence.PostgreSql I prepared the 1.5.1.1 and 1.5.4.1 releases, with the move to Npgsql 7, and fixed its test specs. Earlier, in 2022, I added PostgreSQL persistence to Akka.Hosting. Akkatecture, a CQRS and event sourcing framework on Akka.NET, got a fix to its event consumer’s journal query and a way to mock its actor provider in tests. Smaller fixes went to akkadotnet-healthcheck, the Akka.NET templates and the Akka.NET bootcamp.

KNX.net. In 2015 I worked on KNX.net, a .NET library for talking to KNX home-automation installations. I refactored its connection management, added a connection configuration and logging through LibLog, cleaned up the codebase, and set up NuGet packaging with Paket, the Travis CI build and the generated documentation.

ASP.NET Core and APIs. For Kevin Dockx’s HttpCacheHeaders middleware (2018 and 2019) I made its ETags follow RFC 7232, fixed a wrong redirect for repeated requests within the same second, added Cache-Control per action method, and split the middleware into replaceable parts, so you can plug in your own ETag generator, store and store key. In OpenAPI.NET (2020) I kept a new optional parameter from breaking binary compatibility and added a test that guards the public API surface. In SQLStreamStore I made the creation of its SqlConnection overridable and put more detail into WrongExpectedVersionException, and Swashbuckle.AspNetCore.Filters got a fix for the XML formatter it picks. In 2014 I added branded layouts to the NuGet Gallery, which I needed for Infrabel’s own NuGet feed. Smaller fixes went to Nancy, Redoc, FluentValidation, dd-trace-csharp and ASP.NET Core itself.

F# tooling. Between 2015 and 2020 I sent fixes to Paket, ProjectScaffold, FsReveal, Chessie, the InfluxDB F# client, Ionide, and Jet’s Propulsion, Equinox and FsCodec.

Front end. In 2015 and 2016 I fixed menus, tooltips and tables in Material UI, the React component library.

Rust, AWS and crypto. In 2022 I fixed workflow dispatch in octocrab, the GitHub client behind my Chainflip testnet tooling, made the SNS signature optional in the Rust AWS Lambda event types, updated dynamo-es, an event store on DynamoDB, and fixed file writing in Terraspace. For Iron Fish, a privacy cryptocurrency, I made the number of blocks per sync message configurable and fixed its build with Visual Studio 2022.

Home automation and self-hosting. I published my Leo NTP integration to HACS and Home Assistant’s brands, added content types to the Home Assistant S3 integration, fixed a server error in Simple Icons for Home Assistant, added a theme to the Mushroom themes, and updated a Legic script in the Proxmark3 RFID toolkit. The Cumps Consulting office phone runs on Asterisk in Docker, and I proposed Asterisk 20 support for the Docker image it builds on. In 2026 I fixed Codex calls in netclaw, the .NET agent framework behind Immovlan’s AI bot, and canonical URLs in BentoPDF, which I self-host.

Technologies: C#, F#, .NET, ASP.NET Core, Akka.NET, Akka.Persistence, linq2db, Npgsql, PostgreSQL, SQL Server, SQLStreamStore, OpenAPI, Swagger, Paket, NuGet, React, Rust, AWS Lambda, DynamoDB, Terraform, TypeScript, Python, Home Assistant, KNX, Asterisk, Docker, GitHub, Travis CI.

You May Also Like