Chris Graham


Here's some of my major current and past personal projects, some more serious than others.

You can find some of the code for these, as well as a load of random small stuff on my GitHub.

Current Projects

  • This Site

    This site is an ongoing playground for web technologies and standards. It is currently built and deployed using Astro, Preact, Kubernetes and Nginx.

    I aim for it to maintain the highest reasonable scores for the following:


    You Me Bum Bum Train is an immersive theatre experience I've been involved with since 2016. I develop stage management applications for them that aid in running the show.

    The applications are built using a combination of Django, React and Redux, with a heavy usage of WebSockets for communication. They are not publicly available.

  • Friends of the Welsh Harp

    Friends of the Welsh Harp is a local environmental group I work closely with and helped build the website for.

    They campaign for the Welsh Harp and organise conservation days, and nature events including tree walks and bird walks.

    The website is built with React, and uses Contentful as the CMS.

  • Blooby Noises

    Blooby Noises is a fun soundboard I created for the Twitch streamer Bloody. It contains various audio clips provided by her community.

    It is currently built with Preact, and uses a custom soundboard library I created that uses audio buffers to enable smooth overlaying and altering of sounds.

  • uwsgi-prometheus

    uwsgi-prometheus is a tiny Python package I wrote for Global that allows for monitoring or uWSGI requests, queues and harakiris via prometheus.

    It is currently tested and in use with Python 2.7 and Python 3.6 - 3.9. It should be fine with Python 3.10 and 3.11 as well, but these are currently untested.

Past Projects

  • Bespin

    Bespin was written to be a simple, easy-to-understand ElasticSearch plugin, to allow basic visualising and searching of indices and documents in an ElasticSearch cluster. It also supported basic raw querying.

    Elastic have dropped support for HTML-based plugins and added CORS to the API endpoints, making it less useful, but it does still work if you disable CORS and have direct access available.