In addition to creating my own projects, I also enjoy contributing to other projects.
I’ve contributed various PRs, including:
- Added Azure API spec parsing to allow digging deeper into Azure Resource Manager (ARM) endpoints
- Enabling editing of JSON and submitting to ARM (where PUT/POST is supported) to make changes to Azure resources
- Early work to export Azure resources as Terraform
- Custom actions for nodes
- Data-plane support for
- Storage blobs
- Container Registry
- Kubernetes Service (allows drill-down into the Kubernetes API)
- Cosmos DB (SQL Database endpoint)
- Databricks (allows drill-down into the Databricks API)
Contributed the initial work to enable dev containers to work with source code in WSL 2: https://github.com/microsoft/vscode-docs/blob/master/remote-release-notes/v1_44.md#progress-on-wsl-and-wsl-2-support
I’ve made a few contributions to the
azurerm provider for Terraform improving support for Azure Batch, Azure Storage, Application Insights, and setting ACLs in Azure Data Lake.
Another fun project from Lawrence Gripper, tfoperatorbridge allows you to create a Kubernetes operator from a Terraform provider. I enjoyed kicking around initial ideas for this with Lawrence, as well as adding integration tests and an initial implementation of referencing properties across objects.
The code for https://resources.azure.com lives at https://github.com/projectkudu/AzureResourceExplorer and I’ve made a few contributions there to add and update API sets.
A fellow team started the Azure Databricks Operator project to create a Kubernetes operator for working with Azure Databricks and as part of a customer engagement I’ve made several contributions to the project.
When working with multiple browser profiles, it can become cumbersome to have to manually switch profiles when opening links. The BrowserPicker project is an application that registers as your Windows Browser and then allows you to choose which browser/profile to open when clicking on a link. Rules can be configured to automate browser/profile selection base on the URL.
I contributed a number of PRs to add greater flexibility around URL matching in rules and to unwrap URLs in Outlook/Teams/Twitter links so that rules can work against the underlying URL rather than the wrapped URL.
I also spend quite a bit of time working in the Terminal, so created a
dev container CLI. This CLI allows you to:
devcontainer open-in-codeto open a folder in VS Code as a dev container (skipping the normal interim step where VS Code prompts you to reload as a dev container)
execinto a dev container (analagous to
docker exec) - useful for dropping your terminal session into a dev container
devcontainer template addto copy a template dev container into your project to create a dev container - a handy way to get started
devcontainer template add-linkto symlink a dev container template into your project with a
.gitignoreto exclude the folder - useful if you want to work with a dev container on a project that doesn’t want the dev container contributed
This project provides both a GitHub action and an Azure DevOps task with the goal of making it easier to re-use your VS Code dev container definition in you GitHub and Azure DevOps pipelines. By doing this, your CI builds use the same environment that you use for local development, extending the benefits of dev containers to your CI pipelines.
There has been a long-running issue (now tracked here) with WSL 2 where the clock in WSL 2 ends up behind the main system time. This causes a wide range of issues (for example, access tokens may be issued that the system doesn’t think are valid).
After tracking this down to something that only seems to happen after sleep/hibernation, I created a PowerShell script that is triggered on system resume and automates applying the step to correct the clock. I later updated this to be a command line app written in Go - see https://github.com/stuartleeks/wsl-clock.
An extension for the Azure CLI to give a live progress view of an ARM deployment, complete with colour-coding to indicate status (running, completed, errored).
When working with some PowerShell modules, there can be a large number of cmdlets, and the cmdlet names can get quite long. posh-HumpCompletion adds support for “hump completion”. This means that it will use the capitals in the cmdlet name as the identifiers, i.e.
Get-DC<tab> would complete for
The pi-bell is a networked doorbell project written in Go for the Raspberry Pi. It allows multiple chimes to be connected over the network to a bellpush.
This project was an opportunity to explore building Kubernetes operators with Kubebuilder. It takes the Azure Relay Bridge that Clemens Vasters created and integrates it with an operator to provide a way to redirect services running in your Kubernetes cluster to applications running on your local machine.
An exploration of an idea for how to improve the developer experience of working with Azure Durable Functions to gain productivity and compiler checking by using code generation to avoid the need for magic strings.