Walter Schulze

awalterschulze @ gmail

I am a Go and Elm programmer at eBay and Haskell programmer at home, where I attempt a Phd as a hobby, while maintaining several popular 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 currently I live in Amsterdam, The Netherlands.

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. It has received over 1700 stars and is 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 500 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.

gRPC - Fast and Maintainable APIs

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 Category Theory in a reading group, where we are reading Category Theory for Programmers by Bartosz Milewski. I am also attempting to answer the challenges for each chapter.

I have also recently 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: