I am a senior research manager at Oracle Labs, working on the GraalVM platform. My research is focused on composable, scalable and modular programming language abstractions for large-scale distributed computing, compiler optimizations and optimizing compilers, as well as implementation of frameworks, languages and runtimes for distributed programming.

Previously, I worked at Google on cloud computing infrastructure and big data analytics for Google Maps. Before that, I was working as a research assistant in the School of Computer and Communication Sciences at the EPFL in Switzerland, in the LAMP laboratory on Scala development under the supervision of dr. Martin Odersky, where I received a doctoral degree in 2014.

Publications

PhD Thesis

Book

Articles

Master Thesis

Service

Program Chairs

Program Committees

Reviewing

Projects

This section shortly describes some of the projects I’ve been working on.

reactors Reactors

An event-based framework for distributed programming based on event streams, channels and reactors.

coroutines Coroutines

Scala Coroutines is a library-level extension for the Scala programming language that introduces first-class coroutines.

Coroutines are a language abstraction that generalizes subroutines (i.e. procedures, methods or functions). Unlike a subroutine, which is invoked once and executes until it completed, a coroutine can pause execution and yield control back to the caller, or another coroutine. The caller can then resume the coroutine when appropriate.

mecha Mecha

SBT plugin for workflow automation.

scalablitz ScalaBlitz

A data-parallel programming framework that optimizes collection operations and offers superior performance to that provided by the Scala standard library collections.

scalameter ScalaMeter

ScalaMeter is a microbenchmarking and performance regression testing framework for the JVM platform that allows expressing performance tests in a way which is both simple and concise.

It features quick and easy setup for simple microbenchmarks, multiple configurable JVM microbenchmarking methodologies, concise DSL for performance tests and input data generation, automated regression detection and configurable performance test reporting.

bintree Concurrent tries

The concurrent trie, or Ctrie, is a trie-based concurrent non-blocking data structure which supports efficient, scalable insertions, lookups and removals. It is designed to be cache aware and space efficient. The worst-case complexity of all operations is logarithmic with a very low constant factor. It is designed for efficient hash-based element storing and retrieval. Unlike most concurrent hash tables, there is no global resize phase as the data structure grows or shrinks.

The concurrent tries support an efficient linearizable snapshot operation, which allows consistent, linearizable concurrent implementations of methods like size, iterator or removing all the elements.

scala Scala Parallel Collections

The Scala Parallel Collection framework parallelizes collection operations in a generic way. This framework is easy to use and straightforward to extend to new collections. It implements parallel collections such as parallel arrays, parallel hash maps, parallel hash tries and parallel vectors. It is integrated with the regular Scala Collection framework and allows the user to switch between the parallel and sequential implementation of a collection easily.

gaide Evolutionary Computing IDE

Algorithms in the domain of evolutionary computing often require a large amount of experiments. Experiments involve tuning a number of parameters to find the optimal set of parameters for a given problem or a given instance of the problem. To ease algorithm development, the Evolutionary Computing IDE provides a graphical user interface which allows tweaking the parameters, testing and visualizing the algorithm, running batch jobs and producing performance graphs.

  • Source code
  • Binaries – for Windows, Linux, Mac OS X
  • Paper – an adaptive genetic algorithm variant developed using this framework

vhdllab VHDLLab

VHDLLab is an online system used for modelling and simulation of digital circuits, whose main components are the VHDL code editor, automaton-to-circuit synthesizer, a circuit schema editor and a circuit simulator. This system is designed for online use during practical exercises in digital electronics and digital logic courses. It is used on the Bologna studies on the Faculty of Electrotechnics and Computer Science in Zagreb. It is devised to soften the learning curve of students who are being introduced to topics such as digital circuits, modelling and simulation.

Talks

JIT Optimizations

GraalVM

Coroutines

Reactors

Thesis Defense

Conc-Trees

SnapQueue

Reactive Collections and Game Engine Design

ScalaBlitz

ScalaMeter

Concurrent Tries

Scala Parallel Collections

Scala

  • “Scala – The Learning Curve”, Jazoon 2015, Zurich, Switzerland, October 2015 [HTTP] [PDF]
  • “Scala as a Research Tool”, ECOOP 2013, Montpellier, France, July 2013 [HTTP]
  • “Introduction to Scala”, Java User Group Grenoble, Grenoble, France, March 2011 [PPT]

Articles and writeups

Teaching

I worked on the following courses:

Miscellanous

You can find my reading journal here.

Google Scholar Profile.

I used to use Emacs for a long time, but switched to Vim completely.
Neovim is great.
Used to use the Sublime text editor.
I like to program in Scala. Try it out.
I have a gold Scala badge at StackOverflow.
I hack code for my Android phone in free time.
I like to model in 3ds MAX from time to time as a hobby.
My Open Source Report Card on GitHub.