William Bartholomew

Staff Product Manager at GitHub. Helping enterprises succeed with open source @ scale.


I dedicate myself to delivering enterprises value by delivering simple solutions to complex business problems.

My first software engineering role was custom software development for clients in demanding industries including legal, insurance, and banking.

Working one-on-one with our clients, I learnt to analyze business problems, identify friction, and design business process and technology solutions to resolve them.

In 2009, I joined Microsoft and spent 10 years applying these same skills leading build, release, and open source efforts across the company. These efforts taught me how to design solutions at cloud-scale, iterate quickly, and drive organization-wide changes.

These experiences guide how I work today. Focus on the business problem, reduce friction, keep solutions simple, and learn from each iteration.

While not working you’ll find me enjoying musical theatre and traveling with my family or tinkering with home automation and other side projects (always be learning!).

Latest Post

Jan 13, 2018

Developing Go Plugins on non-Linux Operating Systems

In one of my many (incomplete) side-projects I need to dynamically load modules into a Go application. Vladimir Vivien has a great post explaining how to do this using Go plugins but Go’s plugin functionality currently only works on Linux. If we try from another operating system, such as MacOS we’re stopped in our tracks: $ go build --buildmode=plugin -o eng/eng.so eng/greeter.go -buildmode=plugin not supported on darwin/amd64 Go plugins being limited to Linux isn’t a blocker for my side-project which will require Linux anyway but I’d still like to develop the project on my main development machine which runs MacOS. Read more