Skip to content
View mbg's full-sized avatar
🦭
🦭

Organizations

@github @fpclass

Block or report mbg

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
mbg/README.md

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.

Biography

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.

Personal

I enjoy contributing to and maintaining open-source projects, teaching, cycling, hiking, DIY, cooking, and all things to do with programming languages.

Open-source

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-saml2 if you are building a SAML2 Service Provider.
  • logstash implements various logger backends that can write to Logstash.
  • network-wait lets you wait for networked services to become available.
  • home-assistant-client is a client library for the Home Assistant REST API.
  • moss, a client for Moss, which is a code similarity checking tool.
  • c14n provides Haskell bindings for the C14N implementation (XML normalisation) in libxml2.
  • time-units-types, a small library for representing time units at the type-level.
  • sarif allows reading and writing SARIF files.
  • hindley-milner is a template for when you are building a Hindley Milner derived language and want a starting point.
  • hoop is an experimental library I built while studying for a PhD, which implements an object system in Haskell.

Teaching

For all of my functional programming teaching materials, head over to the fpclass organisation.

Contact

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.

Pinned Loading

  1. wai-rate-limit wai-rate-limit Public

    Rate limiting for Servant and as WAI middleware

    Haskell 17 3

  2. wai-saml2 wai-saml2 Public

    WAI middleware implementing SAML2

    Haskell 5 8

  3. logstash logstash Public

    Haskell client library for logstash

    Haskell 2

  4. network-wait network-wait Public

    A lightweight Haskell library for waiting on networked services to become available

    Haskell 1 2

  5. HachiSecurity/plc-llvm HachiSecurity/plc-llvm Public

    A compiler from Plutus Core to LLVM IR.

    Haskell 10

  6. hindley-milner hindley-milner Public template

    Template for Hindley-Milner based languages

    Haskell 39 1