Skip to content
View AndrejMitrovic's full-sized avatar

Organizations

@d-gamedev-team

Block or report AndrejMitrovic

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
AndrejMitrovic/README.md

Andrej Mitrovic

CTO and Principal engineer.

Over 15 years of work experience. Domain experience in trading systems, blockchain research & implementation, real-time bidding, and language tooling. Worked in Seoul and Berlin. Most recently CTO at a securities-lending platform in Korea.

Most of my open-source work is collected here.

Programming language work

D programming language, core team member with merge rights on the compiler, standard library, specification and tools, from 2013 to 2016. Much of that time went on reviewing and merging other people's pull requests, as well as implementing several impactful features and numerous bug fixes.

I designed and implemented documented unittests, where a unit test placed after a declaration becomes that declaration's documentation example, so published examples are compiled and executed by the test suite. It is now the standard way the D standard library documents itself.

I redesigned the release changelog. It had been a short note followed by links out to Bugzilla queries. I introduced the format still in use today: hand-written entries explaining each significant language and library change, with rationale and code samples showing the old and new behaviour, alongside the generated bug lists. I rewrote much of the generator that produces them and wrote the changelogs for the releases that followed.

The reception by the community was very positive dlang thread saying it was "paying off big time", and the 2.063 release thread is largely people reacting to the changelog rather than the release.

Over the decade I filed over 1,000 bug reports against the toolchain and fixed 233 of them myself, several of which had been open for many years. A lot of that work went into compiler diagnostics, making error messages say what is actually wrong, saving developers' time.

Blockchain

bosagora/agora, a proof-of-stake blockchain built from scratch in D. What I built there with the help of my team:

  • The transaction script engine, a stack machine with locking and unlocking scripts, redeem scripts and signature coverage modes

  • Time-locks at transaction and input level, and the opcodes to use them

  • Threshold signatures letting any N of M parties authorise a transaction without interacting

  • Validator selection, run periodically, using staking and randomness that anyone can verify but nobody can predict

  • Clock synchronisation between nodes

  • The second-layer payment channel implementation, an Eltoo-style design covering channel opening and closing, hashed time-locked contracts, onion routing and invoices

  • Integrating Stellar's SCP consensus, written in C++, into the D codebase

  • My commits

Stream processing

statefun-rust, the Rust SDK for Apache Flink Stateful Functions. I picked it up after three dormant years and upgraded it to the v3 protocol, which was a breaking change: the invocation bridge, function registry, state handling and egress paths all had to be reworked, and the test suite rebuilt alongside them. I reshaped the API, added Kafka and timeout examples, and published the releases to crates.io.

Ports and libraries

  • dchip, the Chipmunk2D physics engine ported from C to D
  • dbox, Box2D ported from C++ to D
  • dtk, a D wrapper for the Tcl/Tk toolkit
  • DWinProgramming, a collection of Windows programming examples in D
  • DSequencer, a toy D sequencer in D

Elsewhere

OpenHub profile, an aggregate view of my open-source contributions across projects.

Contact

LinkedIn · andrej.mitrovich at gmail

Popular repositories Loading

  1. DWinProgramming DWinProgramming Public

    A collection of D Win32 programming examples

    D 37 10

  2. wkBindKeys wkBindKeys Public

    A D WormKit module which implements key bindings for Worms Armageddon

    D 7

  3. dtk dtk Public

    (Work In Progress) dtk is a D wrapper of the Tcl/Tk graphics library.

    D 2

  4. easybind easybind Public archive

    C 1

  5. dmd dmd Public

    Forked from dlang/dmd

    dmd D Programming Language compiler

    D

  6. minilib minilib Public

    A personal D library

    D