I am a PhD student at the University of Pennsylvania, where I am
fortunate to be advised
by Rajeev Alur. My
research interests lie in the intersection of programming
languages, distributed systems, and software verification.
I have done an internship in Microsoft Research, where I worked with
and an internship in the Automated Reasoning Group in AWS, where I worked with
Before my PhD, I did my undergraduate studies at the National Technical University of Athens,
where I was advised by Kostis Sagonas.
Automatic parallelization of shell scripts
PaSh paper (EuroSys 2021),
Dataflow paper (In submission),
Shell Future paper (HotOS 2021),
Short video (POPL SRC)
Lazar M. Cvetković,
and Martin Rinard
Together with Nikos Vasilakis, we are
leading a research project on the automatic parallelization of shell scripts.
The ultimate goal is to improve our understanding of the shell,
approaching it from a programming languages viewpoint, and build frameworks
that enable further studies and analyses on it.
Our first paper on this work was published at EuroSys 2021
One of the main challenges that we had to overcome is that shell commands
are arbitrary black boxes that can be written in a plethora of programming languages,
making any analysis infeasible.
We addressed that by developing an annotation language that captures a few key properties
of shell commands that can then be used by our system to parallelize a script.
These annotations are written once per command, and can be shared among users
in the form of annotation libraries.
We are also working on a paper
that formalizes an order-aware dataflow model that is equivalent to a "scheduling-free" fragment of the shell.
We use this model as an convenient representation on which we apply transformations that expose parallelism.
After we are done parallelizing, the dataflow graph is transformed back to a shell script that can
execute on any standard shell.
Our work is open-source and available on Github.
Partial order driven stream processing
Flumina on Github
Diffstream on GitHub
Diffstream paper (OOPSLA 2020)
and Caleb Stanford
Existing abstractions for stream processing either consider streams to either be totally ordered sequences,
completely unordered relations, or some fixed point in between, e.g., CQL considers streams to be sequences of relations.
However, these representations face a number of issues.
If a representation does not capture adequate order, streaming queries can produce erroneous results
due to nondeterminism and out-of-order input data.
If a representation is "too ordered", then it does not expose available parallelism,
and optimizations due to lack of order.
We propose a flexible partial order abstraction that can capture fine-grained ordering requirements,
allowing for correct and maximally parallel stream processing.
Our first paper on this work was published at OOPSLA 2020
where we describe a differential testing framework
for stream processing applications that allows
users to define the ordering requirements on their application's output, improving testing accuracy.
We are also working on a programming model that can exploit the partially ordered nature of the input stream,
generating highly parallel implementations. This work is under submission,
but a prototype of the code is available on
-  Synchronization Schemas: Safe Parallelization for Data Stream Processing. Work In Progress.
with: Rajeev Alur, Phillip Hillard, Zachary G. Ives, Konstantinos Mamouras, Filip Niksic, Caleb Stanford, Val Tannen, and Anton Xue.
-  Serverless Workflows with Durable Functions and Netherite. In submission. (link)
with: Sebastian Burckhardt, Chris Gillum, David Justo, and Christopher S. Meiklejohn.
-  Flumina: Stream Processing with Specification-Guided Synchronization. In submission.
with: Filip Niksic, Caleb Stanford, and Rajeev Alur.
-  An Order-aware Dataflow Model for Extracting Shell Script Parallelism. In submission. (link)
with: Shivam Handa, Nikos Vasilakis, and Martin Rinard.
-  The Once and Future Shell. Proceedings of the Workshop on Hot Topics in Operating Systems (HotOS 2021). (pdf)
with: Michael Greenberg and Nikos Vasilakis.
-  PaSh: Light-touch Data-Parallel Shell Processing. Proceedings of the Sixteenth European Conference on Computer Systems (EuroSys 2021). (link)
with: Nikos Vasilakis, Konstantinos Mamouras, Achilleas Benetopoulos, and Lazar M. Cvetković.
-  Code-level model checking in the software development workflow at Amazon Web Services. Software: Practice and Experience 2021. (link)
with: Nathan Chong, Byron Cook, Jonathan Eidelman, Kareem Khazem, Felipe R. Monteiro, Daniel Schwartz-Narbonne, Serdar Tasiran, Michael Tautschnig, and Mark R. Tuttle.
-  DiffStream: Differential Output Testing for Stream Processing Programs. Proceedings of the ACM on Programming Languages (OOPSLA 2020). (pdf)
with: Filip Niksic, Caleb Stanford, and Rajeev Alur.
-  Code-Level Model Checking in the Software Development Workflow. 42st International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP 2020). (pdf)
with: Nathan Chong, Byron Cook, Kareem Khazem, Felipe R. Monteiro, Daniel Schwartz-Narbonne, Serdar Tasiran, Michael Tautschnig, and Mark R. Tuttle.
-  Security Criteria for a Transparent Encryption Layer. Workshop on Foundations of Computer Security (FCS 2019). (link)
with: Clara Schneidewind, Benjamin C. Pierce, and Steve Zdancewic.
-  HiPErJiT: A Profile-Driven Just-in-Time Compiler for Erlang. 30th Symposium on Implementation and Application of Functional Languages (IFL 2018). (link) (pdf)
with: Konstantinos Sagonas.
-  PaSh: Data-parallel shell scripting. Student Research Competition @ POPL. 2021. (link) (pdf)
-  Flumina: Correct Distribution of Stateful Streaming Computations. UCSD PL Tea. 2020. (pdf)
-  Flumina: Correct Distribution of Stateful Streaming Computations. Athens PL Seminar. 2019. (pdf)
-  HiPErJiT: A Profile-Driven Just-in-Time Compiler for Erlang based on HiPE. Athens PL Seminar. 2018. (pdf)
-  Configurable Consistency Notions - WPE 2 Report. University of Pennsylvania. 2020. (pdf) (slides)
-  HiPErJiT: A Profile-Driven Just-in-Time Compiler for Erlang based on HiPE. National Technical University of Athens. 2018. (link) (pdf)
- POPL 2021 Student Research Competition 1st place at Graduate Category
- Gerondelis Foundation PhD Award
A system that automatically parallelizes your shell scripts.
A programming model and system for stateful distributed streaming computations.
A differential testing library for stream processing applications in Apache Flink.
- POPL 2022 Student Volunteer Co-Chair
- VMCAI 2021 Artifact Evaluation Committee
- POPL 2020 External Reviewer
In my free time I enjoy programming (for fun or in programming
competitions), board games, escape rooms, and ping
pong. I also occasionally play guitar in an amateur jam band.