I’m a software engineer focused on JVM internals, bytecode engineering, and
runtime systems. I build tools that make program behavior easier to analyze and
reason about. I’m also the founder of GraphForge, an early-stage
startup investigating unintended behavior changes introduced by security patches.
A program in a small proprietary language, translated live into its equivalent NFA.
Source program
input = read()
while (input == 1):
input = read()
if (input == 0):
return
Over the alphabet {0, 1}, this compiles to the regular language 1*0 —
any run of ones ending in exactly one zero, the only path that reaches return.
stateaccept
01
01 / About
What I’m focused on
Making complex program behavior observable and analyzable: from capturing dynamic
execution in a custom JVM to investigating how security patches change behavior.
My focus is runtime systems, program analysis, and developer tools.
02
02 / Experience
Track record
Runtime systems, developer tooling, and programming languages research.
Program analysis, runtime tooling, and language implementations —
with interactive simulations and networked applications alongside them.
FounderEarly-stage startup / Prototype
GraphForge
Understand what your security patch changes.
GraphForge is an early-stage startup I’m building to help developers identify unintended behavior changes introduced by security patches, including fixes generated by AI.
The prototype analyzes software before and after a patch, generates scenarios that exercise the affected code, and produces concrete evidence of changed behavior. These findings help developers investigate whether a security fix also disrupts functionality their users depend on.
In an Apache Shiro case study, GraphForge generated a repeated-login scenario and identified behavioral differences across three fixes. Those predictions were subsequently reproduced by running the scenarios on Java.
Our goal is to make security patch review more reliable, giving engineering teams clear, reproducible evidence to support decisions about the fixes they ship.
RuntimeProfessional
Static specialization of the JVM
A build-time tool that finds every place a Java program decides something at runtime —
lambdas, reflection, service loading, class initialization, runtime-generated classes —
resolves it ahead of time, and rewrites it as static code. Every rewrite keeps the original
beside it behind a guard. Anything the build could not resolve is compiled the first time it
appears at runtime. The result is a program static enough to analyze, so its loops can be parallelized.
STATICIZER / SYSTEM FLOWAHEAD OF TIME
01 / AHEAD OF TIME02 / AT RUNTIME03 / WHAT IT IS FOR
AIProfessional
LLM-assisted Javadoc Automation
LLM-assisted tooling that generates and updates Java Javadocs as part of a CI pipeline,
reducing documentation drift and manual effort.
Personal01
Turing Machine Simulator
Interactive React-based simulator for designing and executing Turing machine languages
with live tape visualization.
Dynamic state-transition editor and reusable configs.
Custom tape input plus step-by-step execution view.
BINARY +1 / LIVESTATE Q_SCAN
INPUT 0111READ 0 · MOVE ROUTPUT —
□0111□□
SCANCARRYACCEPT
School02
NFA Generator
OCaml parser and translator that turns a simple language into a non-deterministic finite
automaton.
Graph visualization of generated automata.
Recursive, variant-type heavy implementation for efficiency.
Extended into a TFPIE 2024 workshop publication on imperative calculi for regular languages.
NFA / 1*03 STATES
S01Q0ACC
School03
Maxima Translator
Code generator that converts parsed input into Maxima code, executes it, and surfaces the
output.
JavaFX chess platform with networked multiplayer and MySQL-backed player and match data.
Game-state handling for checks, mates, and pinned pieces.
Unit-tested core logic and UI interactions.
School05
Banking IoT Simulation
Flutter/Dart IoT project simulating banking transactions with stakeholder-driven
requirements.
Coordinated team delivery, debugging, and QA.
Realistic transaction flows and validation.
04
04 / Publications
Sharing the research
Follow-on work from the NFA Generator project into programming language theory.
TFPIE 2024|Workshop|PL Research
RegularIMP: An Imperative Calculus to Describe Regular Languages
Research on programming language design for modeling regular languages using an imperative
calculus, bridging automata theory and practical language semantics.
Co-authored with
Emma Kelminson Tiago Cogumbreiro
Origin
Continuation of NFA Generator
05
05 / AI Assistance
Ask about Soroush
An AI assistant answering questions about my background, work, and projects.
AISoroush Assistant
Online now
Assistant
Ask about experience, projects, research, or what kind of work Soroush is looking for.
06
06 / Hobbies
Where I recharge
Strategic thinking and pattern-spotting outside of work.
♟
Chess
Find me on chess.com as soshiagh. Always up for a rapid game.