I am a Software Engineer at GitHub, where I work on CodeQL. After initially improving CodeQL support for static programming languages (Go, C#, and Java), I now mainly work on CodeQL in production, cross-team initiatives, and internal developer experience. Some of my work on CodeQL is open-source and can be found in the github/codeql and github/codeql-action repositories.
Prior to joining GitHub, my career started as an academic at the University of Warwick, where I was a Senior Teaching Fellow (equivalent to and nowadays titled Assistant Professor, teaching only) from 2017 until 2021. There, I led courses on Functional Programming, Cyber Security, and others. I received several teaching awards for these courses. I also held various departmental responsibilities, such as the roles of the the Director of Undergraduate Admissions and the Director of Postgraduate Admissions.
After leaving the University of Warwick in 2021, my expertise in programming languages and software engineering led me to work at Tweag. There, I primarily worked as a Haskell and software engineering consultant for some of Tweag's clients to kickstart their new projects or improve their engineering practices. In 2022, I left Tweag to join GitHub to work on CodeQL.
In 2024, concurrently with my work at GitHub, I was a Visiting Assistant Professor at the University of Birmingham and led an undergraduate course on Software Engineering there.
Between 2021 and 2025, I supervised the PhD of Finnbar Keating. I also continue to be involved with peer reviews for academic conferences from time-to-time.
I enjoy contributing to and maintaining open-source projects, teaching, cycling, hiking, DIY, cooking, and all things to do with programming languages.
I maintain a number of Haskell libraries, which you can find on Hackage. Some that you might be interested in are:
wai-rate-limit, which allows you to add rate limiting to your web applications; also available specifically for Servant.wai-saml2if you are building a SAML2 Service Provider.logstashimplements various logger backends that can write to Logstash.network-waitlets you wait for networked services to become available.home-assistant-clientis a client library for the Home Assistant REST API.moss, a client for Moss, which is a code similarity checking tool.c14nprovides Haskell bindings for the C14N implementation (XML normalisation) inlibxml2.time-units-types, a small library for representing time units at the type-level.sarifallows reading and writing SARIF files.hindley-milneris a template for when you are building a Hindley Milner derived language and want a starting point.hoopis an experimental library I built while studying for a PhD, which implements an object system in Haskell.
For all of my functional programming teaching materials, head over to the fpclass organisation.
You can find more information about me and how to contact me on my website at michael-gale.co.uk. You can also find me on LinkedIn.
Please be aware of people who are trying to impersonate me. Social media profiles which genuinely belong to me are linked here and on my website.






