Walter Schulze

awalterschulze @ gmail

I am starting work at Facebook in October 2018. At home I program using Haskell, where I attempt a Phd as a hobby, while maintaining several open source projects. My MSc (cum laude) in Computer Science focused on using HMMs for Music Generation. I have also created a validation language using Brzozowski Derivatives to validate millions of deeply nested structures per second. My current studies focuses on formalizing and extending this language.

I am originally from South Africa, but in 2016 I moved to Amsterdam, The Netherlands and now I live in London, UK.

My full CV is available here.

PhD as a Hobby

Katydid is an encoding agnostic validation langauge.

The language includes a playground and a tour.

This language has been implemented as a library in Haskell and Go.

Open Source

GoGoProtobuf: Protocol Buffers for Go with Gadgets.

A fork of Google's protocol buffer generator and library for Go. GoGoProtobuf is faster and more user friendly. I created and maintained this project until August of 2018, when I handed it over to some amazing new maintainers. During my time, it had received over 1700 stars and was used by Docker, Dropbox, Kubernetes, etcd, to name but a few.

GoDerive derives and generates golang functions from input types. These include monadic and concurrent functions. It has received over 600 stars, because it trended on github, was published in the golangweekly newsletter and redit also found it funny.

GoGraphviz: Go Parser for Graphviz's Dot Format.


A Talk on Ragalur Expressions. Explains Brzozowski Derivatives and how we can use them toghether with other functional concepts such as laziness, memoization and least fixed points to generate Ragas (classical indian music). This is finally demostrated using a Max MSP plugin in Ableton Live.

picolang A functional programming language for working with pico services.

Elm - Frontends for Backend Developers


Monads for Go Programmers. This post received more than 5000 visitors of which I estimate from session duration that it had over a 100 readers. Redit gave it 100 upvotes, which included it being at the top* of r/haskell for a while and it was also featured in the golangweekly newsletter.

For Sum Types: Golang's multiple return parameters are overrated. A go experience report about how I wish go chose sum types over multiple return parameters for handling errors.


I maintian a list of videos, playlists, blog posts, papers, books, etc. that I have learned from and still intend to learn from. Mostly about programming languages and math.

I am currently busy learning about Dependent Types in a reading group, where we are reading The Little Typer. I am also attempting to complete some exercises for each chapter.

Before, I was busy learning Category Theory in a reading group, where we were reading Category Theory for Programmers by Bartosz Milewski. I also attempted to answer the challenges for each chapter.

Last year, I also learned about unification by implementing a version of minikanren in Go.

Music Generation for a Masters

Artists have many influences which they have accumulated over the years by listening to countless pieces of music, this principle is reflected in SuperWillow. The computer analyses (listens to) many pieces of music and composes music by sampling from the analysis.

Article in IEEE Multimedia - Music Generation with Mixed and Higher Order Markov Models - Cited by 34


I make "music" using an electric guitar, a computer and friends: