About Me

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 huge interest of mine, and in fact where my research is heading 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, mechanically, a compiler and a virtual machine for that language. Very cool stuff!

Projects and Websites

Most of my old projects are completely unfinished, but feel free to have a look around my GitHub page nevertheless. There's some cool stuff there! Also, I've written up all of the hackathon projects I've done over the years. In practice, hackathons are pretty much the only time I actually get round to finishing projects... Saying that, here are some projects which I have actually finished, or at least gotten sick of and called them done.

  • 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.
  • 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.
  • 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.
  • 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://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.
  • https://bcp.gar.by — Broken Cameraphone, a web-based party game for n players. Exchange photo prompts and then go out and take some cool pictures.
  • 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.
  • 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.

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.

Ironically, I don't actually like web development. I just happen to end up doing quite a lot of it...

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.