Thorsten Ball

Home Posts Talks Projects Contact My Book

I wrote a book!

It's called "Writing An Interpreter In Go" and contains what it says on the box.

In the book we will build a programming language from scratch. We'll start with 0 lines of code and end up with a fully working interpreter for the Monkey programming language. It's not a book about theory, its focus is working code.

Check it out at

Thorsten Ball's profile picture

Hi there! My name is Thorsten Ball. I'm a software developer living in Aschaffenburg, Germany, a small city near Frankfurt am Main.

I like to develop, optimize and take care of sophisticated systems. Or put another way: I like to program where the rubber hits the road -- wherever that may be.

At daytime, as a software developer at Deutsche Bahn, I work with a web stack: Ruby, Ruby on Rails, JavaScript, HTML and also CSS, but please don't ask me about floats! I also use Go and even shipped performance-increasing C code to production. And if you ask me how much I like PostgreSQL and SQL, I'll talk your ears off.

But before I leave for work, in the early morning hours, I love to deep dive into other programming topics that interest me: programming languages, interpreters, compilers, web servers, systems programming, Unix, databases. I'm a big fan of digging deep and peeling away at abstraction layers to get a better sense of what I'm working with. It also gives me much more leverage higher up. In short: I love learning new things.

Sometimes I write blog posts about these deep dives, which you can find here, or I give talks about what I found. And in 2016 I even wrote a book about what I learned when trying to build my own programming language.


You can subscribe to post updates via the Atom feed.




Applikatoni - A deployment server for small teams with multiple applications, written in Go, developed at flinc.

Fzz - Small command line tool that makes your command line interactive. Also see vim-fzz.

Watchgopher - A lightweight, scriptable and UNIX-y filewatcher.

dotfiles - My dotfiles. git, zsh, tmux, etc.

vimconfig - Everything that goes on in my ~/.vim folder.

Recreational Programming

Not finished, not stable, not ready for production, but fun!

Helles - A multi-process webserver written entirely in C.

Sceem - A small Lisp/Scheme interpreter written in Ruby.


Never hesitate to send me an email at I love getting email from you.

You can also find me on Twitter, GitHub, LinkedIn, XING and Facebook.

I also maintain a mailing list, on which I sent out occasional updates about my book or this blog. I won't spam you and you can unsubscribe at any time.

Keep me updated!