Software engineer, specializing in distributed systems, performance
optimizations, security and infrastructure. I enjoy building software
with good system design and never compromise on product quality.
During my professional work experience, I have acquired a sound
technical knowledge of various programming paradigms, together with
their underlying memory, concurrency models, abstractions, and
approaches to modularity. I have most experience using languages such
as Go and Rust, as well as functional languages such as OCaml, F#,
and Scala. In addition, I enjoy working closely with DevOps and
infrastructure teams.
For my future projects, I have a big preference for blockchain core
engineering positions (ideally EVM-based). My main interests include
storage, protocol performance, Layer 2 architecture, data
availability, privacy-preserving technology, and P2P networks,
with a strong emphasis on decentralization and security. Nevertheless,
I am also open to application-layer projects that involve deep systems engineering.
Besides reading many technical books about industry best practices
and working on my side projects, I also like to spend time rock
climbing, dancing Cuban salsa, traveling, or just meeting new
people/friends :).
Founder (Corecrypt d.o.o.)
Founded a software engineering company specializing in building,
hardening and operating blockchain infrastructure.
Software Engineer (Oasis Network, contracted by Oasis Foundation, Remote)
Protocol Developer for the Oasis Network, working primarily with Go
and Rust, specializing in storage and performance optimizations.
Introduced batching that significantly accelerated light history
re-indexing. Diagnosed and resolved existing state pruning and
database disk space reclamation issues. Designed and implemented
parallel checkpoint creation algorithm and worked on optimizing
state sync worker. Finally, I worked on P2P protocol improvements,
changing protocol level logic for the keymanager access policy and
contributed to production incident response.
Software Engineer (Tezos blockchain, contracted by Marigold,
Remote)
Core Protocol developer for the Tezos blockchain, writing
open-source code in OCaml for distributed network of nodes. I have
worked on designing LRU cache for lazy evaluated hash-map data
structure on the protocol level, implementing data availability
solution for Tezos blockchain and developing autogeneration of the
base client libraries for Rust and JavaScript, that are consistent
with reference OCaml implementations.
DevOps (Tezos blockchain, contracted by Marigold, Remote)
Working with the infrastructure team on making Tezos main
repository a functioning monorepo. Concretely, I have been working
on conditional CI execution, optimizing CI pipelines and docker
images. Finally, I was actively pushing for introducing CI
Observability, following open telemetry standards.
Software Developer (Ixtlan Team, Ljubljana)
Working on an application responsible for government finance management.
I was building websites from scratch (Angular), implementing business logic
(Java RESTful API), designing databases and writing stored procedures.
Migrating a DSL from OCaml to F# (SimCorp, Copenhagen)
Working on a migration of embedded DSL written in OCaml to F#.
We modelled some of the missing OCaml language constructs in F#,
extended the F# DSL grammar definition and corresponding parts in
the evaluator. Finally, we developed a toolchain for automatic
translation of OCaml instruments to F# counterparts.
Student Researcher (University of Ljubljana)
Microorganisms of Petola and Salina Mud from the Secovlje Salt
Pans was an interdisciplinary research project organised in
association with partner universities and research institute. I was
responsible for elemental analysis of samples from salt pans and
chemical analysis of brines and mud samples.
IT-Universitetet i København, Denmark
Master of Science (MSc) in Software Design (Software
Development track)
University of Ljubljana, Slovenia
Bachelor of Science (BSc), Chemistry
Thesis: Molecular structure characterisation and elucidation using
nuclear magnetic resonance (NMR) spectroscopy