My specialties lie in performance engineering and observability tooling, which has been the focus of my graduate research. I also have prior experience in implementing data analytics solutions using distributed data processing systems. I am also interested in and familiar with programming language design and implementation.

In an earlier life I used to be a software engineer for WSO2 Inc. working in Business Activity Monitor (now renamed Data Analytics Server ) team. There, I worked with some of the Apache big data stack including Hadoop, Hive, Cassandra, Thrift and Zookeeper.

Over the years I have been writing blogs discontinuously in several places on the web. My latest (but unmaintained for a while) blog incarnation could be found here .


Some projects that I have been involved in over the years roughly in reverse chronological order.


A lightweight shadowstack which leverages binary static analysis to reduce overheads.


Low overhead always online C/C++ application profiler based on Dynamic Binary Instrumentation (DBI).

Haberno CNC/HPX

Integrated HPX distributed task execution enviornment as a CNC backend target. Poster I did on it can be found here.

Concurrent Cilk

A research prototype based on Intel Cilk supporting concurrency in the face of blocking workers operations. It tries to maximizes parallel effiency in such cases, by promoting light weight workers to full OS threads. I wrote Cilk I/O library based on the Concurrent Cilk implementation for benchmarking purposes.

WSO2 Business Activity Monitor

A data analytics and monitoring solutions for businesses. My contributions were inside the data analytics layer in integrating various big data solutions to the product.


A spare time project on a Java library for distributed synchronization pritimives mimicking Java Lock API. It uses Zookeeper underneath.

Apache Tomcat

I did a Google Summer of Code with Apache Tomcat project improving it's JMX infrastructure. Some details can be found here.


I did a Google Summer of Code with BpelUnit project on adding Apache ODE business process engine as a runtime backend for tests. it's JMX infrastructure. Some tutorials I did on my work can be found here and here.


  • [New!] Buddhika Chamith, Xiazhou Meng, Ryan R. Newton "ShadowGuard : Optimizing the Policy and Mechanism of Shadow Stack Instrumentation " in Submission
  • Buddhika Chamith, Bo Joel Svensson, Luke Dalessandro, Ryan R. Newton "Instruction Punning: Lightweight Instrumentation for x86-64" in PLDI 2017 (14.6% acceptance rate)
  • Micheal Vollmer, Sarah Spall, Buddhika Chamith, Laith Sakka, Milind Kulkarni, Sam Tobin-Hochstadt, Ryan R. Newton "Compiling tree transforms to operate on packed representations" in ECOOP 2017
  • Buddhika Chamith, Bo Joel Svensson, Luke Dalessandro, Ryan R. Newton "Living on the Edge: Rapid Probe Toggling with Cross Modification on x86" in PLDI 2016 (16% acceptance rate)
  • Christopher Zakian, Timothy AK Zakian, Abhishek Kulkarni, Buddhika Chamith, Ryan R Newton "Concurrent Cilk: Lazy Promotion from Tasks to Threads in C/C+" in The 28th International Workshop on Languages and Compilers for Parallel Computing, LCPC 2015.
  • Buddhika Chamith, Supun Malinga, Kathiravelu Pradeeban, Denis Weerasiri, Shehan Perera. "Horizontal format data mining with extended bitmaps" in Soft Computing and Pattern Recognition (SoCPaR), 2010.
  • Buddhika Chamith, Supun Malinga, Kathiravelu Pradeeban, Denis Weerasiri, Shehan Perera, Vishaka Nanayakkara. "Mooshabaya: mashup generator for XBaya" in Proceedings of the 8th International Workshop on Middleware for Grids Clouds and e-Science, 2010.