Daniil Gentili

Daniil Gentili - Senior software engineer with a vast experience in the development of complex, high-performance and massively parallel systems using Rust, Golang, C++, C, PHP.


Portfolio


Daniil Gentili (VAT 01647560299) - Senior software engineer with a vast experience in the development of complex, high-performance and massively parallel systems using Rust, Golang, C++, C, PHP.

Creator of MadelineProto, maintainer of Psalm, ext-php-rs.


Native speaker in Italian and English: currently residing in Italy.
10+ years of experience.

Professional experience:
  • Main clients: Telegram and Nicelocal.
  • Languages: Rust, C++20, C, Golang, PHP, Node, Bash, Lua.
  • Significant FOSS contributor: creator of (among others) MadelineProto, php-tokio, maintainer of Psalm, ext-php-rs, gojekyll.
  • Stacks: MySQL/MongoDB/redis/keydb, Elasticsearch, Kafka, Linux, Docker, Grafana stack (prometheus/influxdb), and much more.
  • Frameworks: AMPHP, React, Redux, Bootstrap, and much more.
  • Advanced networking: administrator of the AS198747 autonomous system.

Hire me!

Professional works:
  • Created from scratch a high-load, efficient NFA search engine built from scratch in Go, compiling a custom regex-like language to a highly optimized NFA.
  • Implemented full sharding for massive parallelism in a high-load service for advertisement statistics in Go.
  • Multiple large refactorings to a 1 million SLOC PHP 5/7 codebase, migration to PHP 8, 10% => 95% type coverage.
  • Various other Rust, Go, C and (async/traditional) PHP development.
  • VoIP telephony applications, including a full integration testing platform for asterisk, and fixes to critical race-conditions in the C codebase of the open-source asterisk project.
  • An automated VoIP integration testing and quality control platform for Android, requiring low-level changes to the Android Hardware Abstraction Layer driver stack (C/C++).
  • Other low-level software development, using mainly C, and a bit of PHP.
  • I am currently maintaining the official technical documentation for the Telegram MTProto protocol.

Personal/open source work:
  • MadelineProto - an open-source client for the MTProto cryptographic protocol, most notably used for interacting with Telegram Messenger’s low-level MTProto API.
    MadelineProto is now approved by Telegram, and can be seen in the apps list on the official website: https://telegram.org/apps.
    MadelineProto abstracts away all implementation details of the Telegram MTProto API, handling cryptography, transport protocols, the presentation layer with a dynamic parser (soon to be replaced by a static parser) for the TL Type Language and the MTProto API, offering a fully asynchronous fiber-based (AMPHP v3) high-level PHP API.
    It also supports secret chats and features a pure PHP implementation of Telegram's VoIP protocol, for native PHP audio call support in MadelineProto!
    Head over to docs.madelineproto.xyz for a full installation and usage tutorial.
  • 1st, 2nd and 3rd places in several programming contests for developing innovative and original solutions for blockchain, VoIP and data clustering/big data applications, developed in C++20 and PHP.
  • Significant FOSS contributions: creator of (among others) MadelineProto », php-tokio », maintainer of Psalm », ext-php-rs », gojekyll ».

    Thanks to generous sponsorships from Nicelocal, I have contributed multiple large refactoring to Psalm, an advanced PHP static analysis system developed by Vimeo.

    Psalm is like Typescript for PHP, adding to PHP features like generics, shaped arrays and literal types, with the addition of static analysis using formal methods, to easily discover bugs before even executing the code.

    Some of my work on Psalm includes:
    • Full immutability for the entire codebase, fixing a large amount of issues caused by non-deterministic execution order when threading is enabled.
    • List shapes, huge improvements to array shapes, including unsealed/sealed array shapes, generics improvements.
    • Currently working on disjoint array shape support and a satisfies operator for improved generics, inspired by typescript.
    • Creation of over 140 pull requests with other features and bug fixes.
    Thanks to these contributions, I was offered a role of Psalm maintainer, which I happily accepted.
    Other open source work:
    • Two PHP RFCs - Proposals to add/change features in the PHP language, one of which was accepted.
    • Multiple improvements to the testsuite of the PHP JIT compiler, as well as a lot of QA to find and report bugs in the PHP JIT compiler.
    • php-tokio - A Rust project to use any async Rust library from PHP.
    • madelineTon.js - Pure JS client-side implementation of the Telegram TON blockchain protocol: this library was developed during the contests, and makes use of the mathematical properties of Ed25519 and Montgomery curves to implement efficient conversion of points, to reuse the otherwise (incompatible due to non-standard TON cryptography protocols) high-performance nacl.js library for encryption.
    • Phabel - A PHP transpiler inspired by Babel (currently not publicly maintained, but still being used internally for various projects, thanks to the very ergonomic graph-based AST transformation framework it offers internally).
    • AsyncOrm - Async ORM based on AMPHP v3 and fibers.
    • I'm the main maintainer of gojekyll, a fast Go implementation of the Jekyll blogging engine.
    • I created and maintain several other open source libraries, listed in my GitHub profile
  • I maintain my own Autonomous System, AS198747, using a redundant infrastructure with two upstreams and a custom network configuration using bird2+routinator, openwrt, wireguard and systemd-networkd.
    All subnets announced by AS198747 are RPKI-validated, and any imported RPKI invalid routes are rejected.
    All of my containerized infrastructure with multiple services (self-hosted CI, gitea, PHP/Go/Rust services, etc) is also hosted on AS198747 via IPv6.
    The IPv4 part of my infrastructure is hosted on a commercial ISP that does not do RPKI validation, but IPv4 RPKI invalid routes are still rejected on my routers, thanks to a custom filtering setup based on bird2 and routinator.
  • Various currently-private low-level projects, including a port of Linux for the Videocore IV architecture (a custom architecture used by the VPU of Raspberry PI), and a hobby OS in C.


Hire me!

Contacts


Enter a name!
Enter a valid E-Mail address!
Enter an option!
Enter a message!