The Virtual Void A blog by Johannes Rudolph


My focus and interests lie in:

  • domain specific languages and abstraction in relation to writing performant programs
  • programming languages, parsers, and compilers
  • general performance optimization for JVM languages
  • network protocols, binary representation, and compression of data
  • streaming infrastructure
  • spatial data, real-life traffic and public transit, and visualizations
  • finding bugs and developing tools to analyze systems at runtime

I’m a rapid prototyper who tries to get something to work as soon as possible. From a first working state which can already be used to demonstrate ideas, approaches, and design, I rely on incremental changes to refine and cleanup the original approach.

Previous Work

akka team at Lightbend (2016 - 2022)

Working on all aspects of the Akka open source project and surrounding commercial products. Lots of interesting distributed and concurrent architecture problems. Continuing work on Akka HTTP and streams.

Later working on Lightbend’s Kalix offering, on the public API but also a lot on its infrastructure, analyzing problems on the backing distributed database, performance improvements, and cluster setups.

akka-http (2013 - 2016)

During the past years, the spray team was working as contractors for Typesafe to integrate spray into Akka. A large part of the work consisted of rewriting spray’s core engine on top of akka-stream. We were also quite involved into building the first prototype of akka-stream itself which at that time was the prototype implementation of Reactive Streams. By now the Reactive Streams interfaces are part of JSR 166 and will likely be included in JDK 9.

I was responsible for implementing the Websocket protocol in akka-http and creating large parts of the Java API.

spray (2012-2013)

Working on the spray project and offering consulting services for using and optimizing spray applications.

A lot of performance optimizations were done in that time making spray one of the fastest JVM-based HTTP servers at that time in the famous Techempower Benchmark.

telfish (2011)

I was employed to build tariff comparison engines for mobile phone and electricity tariffs with Scala / Akka. Not only were these projects the incubator of spray but we also built parsers and IDE plugins for external DSLs.

Cleversoft GmbH (2005 - 2010)

Apart from setting up a classical JEE architecture for Cleversoft’s software offering I worked on a large range of internal projects. Many of them involved designing and implementing DSLs in Java for lots of specific tasks. During the years I developed a (closed-source) library for laying out PDFs with a nice DSL and a Rails migration-like library for updating database schemas. I also worked on the actual business domain which means doing lots of math to implement statistical algorithms for financial tasks.

Open Source Work

See Open Source Work.

Talks (selection)

  • Scala World 2015: Reactive Streams & Akka HTTP - Behold the Flow! (with Mathias Doenitz) video / example code
  • Scala Days 2014: Scala in Numbers - The Ecosystem Census - Source code Statistics of Common Scala Libraries video / slides
  • 2014: akka-http: connect to the world (with Mathias Doenitz) slides
  • 2013: Hands-On Spray: REST on Akka (with Mathias Doenitz) info
  • Scala Days 2010: Mnemonics - Type-safe bytecode generation with Scala 2010 video / slides


Higher-Order and Symbolic Computation Volume 23 Issue 3 (2011): Type-safe Bytecode Generation at Run Time (with Peter Thiemann), available at Springer or here

PEPM 2010: Type-safe Bytecode Generation at Run Time (with Peter Thiemann)


Universität Freiburg, Germany 2001 - 2009 Diplom Informatik