Experience · JT Digital
Toni Kocjan Turk
Co-founder & Head of Marketing, Product Development and Engineering
iOS engineer for 10 years, now full-stack architect. Built 7+ compilers as a passion, from OOP to FP to ownership to bytecode, including one for a published MSc thesis on a lazy functional language without garbage collection. Authored a random graph model (Expanding-Shrinking) that produces real-world network properties from pure merge/split dynamics, and a noise-augmentation technique for robust music identification using CNNs. Now leading engineering, product, and marketing at JT Digital, building type-safe developer tooling and production systems.

Experience
From shipped iOS apps to a studio of our own.
Co-Founder & Head of Marketing, Product Development and Engineering
Leading engineering, product development, and marketing. Building fluent-html, Everyframe, and 15+ client applications, AI-assisted with Claude Code.
iOS Engineer
Shipped production iOS apps for Facelift, Noble Stay, and AXS VIP. Built PromiseKit, a monadic async library with Haskell-inspired operators, used by 50K daily users.
Teaching Assistant
Three semesters teaching at the Faculty of Computer and Information Science: assistant teacher for Compilers and Virtual Machines, and tutor for Functional Programming across two semesters.
iOS Intern
Student internship on the iOS team, building Triglav Škode, Triglav Zdravje, and iTriglav.
Education
Two theses, two compilers.
MSc Computer Science
University of Ljubljana, Faculty of Computer and Information Science
Thesis: Lazy Functional Programming Language Without Garbage Collector
BSc Computer Science
University of Ljubljana, Faculty of Computer and Information Science
Thesis: Atheris: Compiler for an Object-Oriented Programming Language
Technical skills
Languages, domains, foundations.
Projects
24 projects, six disciplines.
Compilers, graphics, machine learning, systems, and tooling.
Start with these six
The video engine and motion renderer built at JT Digital, two theses, a research model and a high school game.
At JT Digital · 2026
Renderbox Motion View →
A deterministic renderer for motion graphics: each animation is code, drawn on the CPU with no browser and no GPU.
Every frame comes out byte-identical on every machine tested, at any thread count and in WebAssembly, checked against a sealed record of frame hashes.
At JT Digital · 2024–now
Renderbox View →
Multi-runtime video AI engine: one typed Rust pipeline compiles across FFmpeg, ONNX Runtime, and OpenCV.
Phantom-typed streams make feeding audio into a video filter a compile-time error ; the graph lowers to FFmpeg args, ONNX tensor configs, and OpenCV params, driving 30+ vision models across detection, segmentation, pose, depth, OCR, and redaction.
MSc thesis · 2022
Blang (Bitis) View →
Lazy functional language with compile-time ownership and borrowing instead of garbage collection.
Introduces self-borrows for cyclic data structures (graphs, infinite streams).
MSc research · 2021
Expanding-Shrinking Network Model View →
A random graph model combining growth and shrinkage dynamics to produce networks with real-world properties.
From random merges and splits alone it reproduces hubs, the small-world effect (short, shrinking distances), a giant connected component and clustering, with no preferential attachment built in.
BSc thesis · 2018
Atheris View →
Complete compiler for a Swift-like OOP language with vtables and polymorphic dispatch.
Designed and implemented from scratch: ~120 Java source files, 8,000+ lines.
High school · 2014
Tossing Balls View →
High school graduation project: a 2D physics puzzle game with Box2D integration and data-driven level loading.
Box2D for the physics, with a hand-written entity system, polymorphic animation framework and XML level loading around it.
Compilers & Language Engineering
7+ compilers across Java, Swift, C, Zig, Mojo, and TypeScript: from OOP to FP to ownership to bytecode to DSLs.
Blang (Bitis) View →
Lazy functional language with compile-time ownership and borrowing instead of garbage collection.
Introduces self-borrows for cyclic data structures (graphs, infinite streams).
Atheris View →
Complete compiler for a Swift-like OOP language with vtables and polymorphic dispatch.
Designed and implemented from scratch: ~120 Java source files, 8,000+ lines.
SML-to-Racket View →
Source-to-source compiler with lambda calculus IR and Church-encoded algebraic datatypes.
Dual-target compiler with direct Racket emission and a lambda calculus IR featuring Church-encoded booleans, tuples, and algebraic datatypes.
PINS Compiler Course View →
The compilers course taught at the University of Ljubljana: 8 progressive assignments taking 100+ students from lexer to interpreter.
Taught as teaching assistant for Compilers and Virtual Machines: a complete 8-assignment course growing from 12 to 73 source files.
clox View →
Single-pass bytecode compiler and stack-based VM in pure C with Pratt parsing.
From source text to executing VM with no AST intermediate representation.
Mojo Crafting Interpreters View →
Bytecode VM with mark-and-sweep GC in Mojo using compile-time parametric structs.
Tri-color mark-and-sweep with weak references for interned strings, and a stress mode that collects after every instruction.
Graphics & Simulation
Real-time rendering, ray tracing, physics games, and game AI.
Monte Carlo Path Tracer + Spline Engine View →
Physically-based renderer with importance sampling and a functorial spline animation system.
Implements the rendering equation with importance sampling, Russian roulette termination, explicit direct light sampling via solid-angle cone sampling, and three BxDF models (Lambertian, specular with Fresnel, Oren-Nayar rough diffuse).
3D Rendering Engine with Shadow Mapping View →
Custom OpenGL engine comparing four shadow mapping algorithms with runtime switching.
Default, PCF, VSM with Gaussian blur, and CSM with per-cascade resolution, all in a single engine.
Tossing Balls View →
High school graduation project: a 2D physics puzzle game with Box2D integration and data-driven level loading.
Box2D for the physics, with a hand-written entity system, polymorphic animation framework and XML level loading around it.
Pac-Man View →
Arcade-faithful clone with per-ghost personality AI and A* pathfinding.
Per-ghost personality targeting (direct pursuit, 4-tile ambush, vector-doubling flanking, distance-threshold retreat), faithful to the original arcade's documented behavior.
Level Designer View →
Companion level editor for the Tossing Balls game.
Machine Learning & Data
Neural networks, 37M-node graph engineering, and numerical computing.
Music Classification with Deep Learning View →
IEEE-format research paper on noise augmentation for robust music identification.
Trains for real-world degradation rather than clean-sample accuracy.
Expanding-Shrinking Network Model View →
A random graph model combining growth and shrinkage dynamics to produce networks with real-world properties.
From random merges and splits alone it reproduces hubs, the small-world effect (short, shrinking distances), a giant connected component and clustering, with no preferential attachment built in.
SwifyPy Numerical Mathematics Library View →
Protocol-oriented numerical computing in Swift with BLAS-accelerated matrix operations.
Six matrix types sharing a MatrixProtocol interface with compile-time BLAS dispatch through protocol witness tables.
Systems & Production Software
Type-safe frameworks, production libraries, and systems programming.
PromiseKit View →
Production Promise library built from algebraic first principles, shipped to ~50K DAU across multiple iOS apps.
map derives from flatMap, reduce from fold, and operators match Haskell's typeclass precedence hierarchy.
fluent-html View →
Zero-dependency, type-safe HTML builder for TypeScript with compile-time Tailwind CSS and HTMX safety.
A mixin architecture using TypeScript declaration merging + prototype assignment splits a 1,100-line Tag class into focused modules with zero API changes.
Renderbox View →
Multi-runtime video AI engine: one typed Rust pipeline compiles across FFmpeg, ONNX Runtime, and OpenCV.
Phantom-typed streams make feeding audio into a video filter a compile-time error ; the graph lowers to FFmpeg args, ONNX tensor configs, and OpenCV params, driving 30+ vision models across detection, segmentation, pose, depth, OCR, and redaction.
Renderbox Motion View →
A deterministic renderer for motion graphics: each animation is code, drawn on the CPU with no browser and no GPU.
Every frame comes out byte-identical on every machine tested, at any thread count and in WebAssembly, checked against a sealed record of frame hashes.
projects-template
Scaffolding monorepo that generates production TypeScript apps from a single interactive wizard.
Around 30 optional feature modules and three database engines live in one annotated source tree: inline block markers let the generator strip whatever you did not choose, instead of parallel forks that silently drift.
Algorithm Competitions
Two 1st places and one 2nd/3rd place across three timed MSc algorithm competitions.
Competition Highlights View →
Timed MSc algorithm competitions in heuristic search, optimization, and computational geometry.
1st place , Progressive Chess: A* converted to greedy best-first (g=0), Zobrist hashing with incremental XOR, composable per-piece heuristic dispatch, pawn promotion pruning.
SAT Solver View →
Boolean satisfiability framework reducing NP-complete problems to SAT via a generic Expression<T> free algebra.
Expression<T> as a generic, functor-equipped recursive data type: the free Boolean algebra pattern later reused in Renderbox's filter-graph AST.
Developer Tooling
CLI parsers, linting tools, and code generators.
ArgPar View →
Annotation-driven CLI argument parser.
LintLokalization View →
Localization linting for Swift projects.
Swift Code Generators View →
AST-based code generation tooling for Swift.
Work with Toni
The compiler does the complaining.
JT Digital's client work is built the same way: type-safe tooling, production systems, and software you can click before you sign.