Hi! I'm Zac, a PhD student in the FP lab at the The University of Nottingham, under the supervision of Graham Hutton.

I'm really interested in programming languages (mostly functional ones) and how they can be made easier to use (e.g. interactive programming, clever type systems), plus things like program synthesis, holes, and anything else to do with incomplete programs. For my 4th year dissertation, I came up with some novel techniques for synthesising recursive functions (have a look at my paper - it should be readable without any background in the area!) and implemented them in my toy programming language, Fugue.

Another great interest of mine, and in fact where my research is mostly focusing at the moment, is compiler calculation. This is where we can write a specification for some programming language as a high-level semantics (e.g. a tree-walking evaluator) and derive a compiler and a virtual machine for that language. My latest (and first) paper in this area, a functional pearl titled Calculating Compilers Effectively, has been accepted for publication in the Haskell Symposium, 2024.

Outside of my research, my interests include climbing, reading (mostly sci-fi and fantasy), and being slightly obsessive about coffee. I also have an assortment of various programming projects which I work on from time to time. Also, I'm a big hackathon enjoyer, when they're in season.

Publications & Blog

Projects and Websites and Things

Most of my old projects are completely unfinished, but feel free to have a look around my GitHub page nevertheless. Amongst the 150-or-so cobweb-encrusted repositories there, there are some pretty cool things!

In practice, hackathons are pretty much the only time I actually get round to finishing projects... Saying that, here are some other projects which I have actually finished, or at least gotten sick of and called them done.

  • Fantasia & Fugue. Two little projects actually. Fugue is a functional programming language I made for my third year dissertation, with a novel type system supporting holes (i.e. incomplete programs). Fantasia is an example-directed program synthesis engine built on top of it, with some clever little tricks to synthesise recursive programs. (Haskell)
  • Infiltrate, a fun little game I made for a module at university. I think the brief was to make a game "with five levels". In Infiltrate, you are playing as a spy breaking into an evil pharmaceutical lab, but each "level", you have to avoid detection by the spies you played on the previous levels. (Java, LibGDX)
  • cancrizans, an FM (frequency modulation) synthesiser and sequencer, written in Rust. Mostly complete? I mean it's usable, at least. Comes with a few effects, and customisable instruments. (Rust)
  • An 8-bit CPU designed at the logic-gate level. I never built it, but I'd love to at some point.

Also, I've made some websites over the years which may be useful and/or fun and/or interesting to some people! Please do let me know if any of these links are dead; they shouldn't be.

  • https://whisperingcameraphone.com — Whispering Cameraphone, a web-based party game for n players. Exchange photo prompts and then go out and take some cool pictures. (Python, Web stuff)
  • https://magicalinternetpoints.com/ — Gain magical internet points by doing stuff on the web! This is where the cool badge under the photo on this page comes from. (Go, Web stuff)
  • http://tab.gar.by — A minimalistic, nice-to-use web-based guitar tab viewer. Paste plain-text tabs in, and view them in a significantly more readable (and wide-screen-friendly) way.
  • https://gar.by — Honestly, just a cool domain name. In theory, lists the websites of everybody in my family. As it happens, only two of us have websites.

I've also made some websites for other people/societies.

  • https://hacksocnotts.co.uk, the page for HackSoc, the hacking (as in hackathons), "recreational" programming, and computer science society at the University of Nottingham. (I used to be the president.) It's no longer maintained by me, though.
  • https://nottsmun.uk, the page for NOTTSMUN, the University of Nottingham's model united nations conference.

Talks and Workshops

I really enjoy talking to people about stuff, and also giving workshops and teaching people about things. Here's a list of some of these. Unfortunately most weren't filmed, but some were!

Also, I have a YouTube channel with some extra videos and little demos of projects.

Contact Me

If you want to contact me, the best way is probably through Discord, where I'm zacmg. Or, you can email me at me <at> this domain . co . uk.

Hackathons

I go to a lot of hackathons. It's a great joy of mine, and I've written up all of the hackathon projects I've done over the years here. Here are some of my favourites:

I'm also a volunteer at Hackathons UK, and I used to be the lead organiser of HackNotts.

Mixed Reality

Something which I enjoy a lot and really want to do more of is "mixed reality". In particular, I mean projects which combine physical objects with actuators and (hopefully hidden) sensors, with software, to give some kind of experience. As a piece of art, really.

I've done some things like this at various hackathons, but probably the most elaborate was an art installation about a children's book called The Singing Mermaid, by Julia Donaldson.

Back in 2019, when I finished my A-levels, me and a few of my friends were asked by the school to make some type of interactive exhibit for kids. This was for an event put on by the local community in Dorchester called Moonbury Rings, to celebrate the 50th anniversary of the Apollo moon landing.

We got some old cardboard boxes and filled them with computers, and so put together some retro arcade machines (home-made games, too, of course!). The link to the moon landings? I mean, one of the games was asteroids, at least...?

Other Stuff

There's a lot of stuff on this website, but most of it can be found through the links at the top. Mostly, it's here to be a bit of a portfolio and a bit of a space for me to dump links in and send to people. There are also some things in the works (like a blog), but we'll see how those go.