Conference Talk Ideas

In the future I would like to give presentations at software conferences. Here are few topic ideas:

Neat Tricks When Building .NET Pipelines

Command line tools such as git and dotnet are terrific assets for building and publishing your applications. We will investigate how they can be used in different situations:

  • Using git commands such as git rev-parse, git clean and git describe to improve a build pipeline
  • The versatility of dotnet publish
    • Single binary, ahead-of-time compilation and self-contained builds
    • Add commit ID information
  • Utility dotnet sub-commands such as dotnet format or dotnet list package --outdated
  • Derive version information from a CHANGELOG.md file, automate release commits and tagging

Home Cooked Software: A Backup Story

In the last few years I built Chunkyard, a backup tool which combines full and incremental backups while also including features such as copying and validating backups. Chunkyard does not offer anything new that other open source backup tools miss, but it gave me several opportunities to explore topics such as:

  • How backup applications with deduplication work
  • Cross platform development in .NET
  • Testing new language features
  • Limit myself to the standard library (e.g. writing my own CLI parser)
  • Create a useful and fast testing suite
  • Tinker with build and publish automation
  • Do tiny performance experiments

Content Addressable Storage + Content Defined Chunking

Modern backup tools use techniques such as content addressable storage and content defined chunking to create deduplicated and verifiable backups. We will explore how these techniques work and how they could be applied to other areas such as:

  • Version control systems
  • Application downloader/updater
  • Artifact storage for build pipelines
  • Verifiable URLs

Teaching an Old Dog Monolith New Tricks

Some of us are still doing manual deployments to ship software. Let's have a look at a concrete example of a distributed monolith and what we can do to automate its deployment:

  • Implement a "deployment configuration" using a templating language, reusable configuration files and scripts
  • Generate a "deployment configuration" using different criteria
  • Use a package manager like Chocolatey (Windows)

Git as a Tool for Thinking

Gamers know that it's a good idea to click "save" whenever they are about to do something significant, risky or stupid. In the same sense developers should "save" (commit) all the freaking time too:

  • Feel the power of resets and interactive rebases
  • Use stashes, branches and WIP commits for experiments
  • Apply partial staging to reflect and review your work
  • Use worktrees for some sweet documentation