Evgeny Tsvigun, Developer in Saint Petersburg, Russia
Evgeny is available for hire
Hire Evgeny

Evgeny Tsvigun

Verified Expert  in Engineering

Ethereum Smart Contracts Developer

Location
Saint Petersburg, Russia
Toptal Member Since
April 19, 2018

Evgeniy is a back-end developer with over ten years of experience, specializing in big data/fast data processing and machine learning. He's always in touch with the latest advances in the industry and continuously upgrades his skill set. His toolkit is centered around functional programming and scalable analytics engines like Apache Spark. Evgeniy considers the job done only when it has been tested, documented, and deployed.

Portfolio

Voice Group LLC
Solidity, Blockchain, Non-fungible Tokens (NFT), Ethereum, Smart Contracts...
Facebook
Apache Kafka, Presto, Python, Haskell, JavaScript, Software Architecture
Change Dynamix
AWS Lambda, Amazon Kinesis, Redshift, Parquet, Akka Streams, Akka, Apache Spark...

Experience

Availability

Part-time

Preferred Environment

Slack, Docker, GitLab, Git, PyCharm, Visual Studio Code (VS Code), IDEA IDE, Linux

The most amazing...

...thing I've coded recently is a Fuzzy C-Means clustering implementation as a Spark ML pipeline, using BLAS and fully compliant with Spark ML library guidelines.

Work Experience

EVM (Solidity) Smart Contract Engineer/Architect

2022 - 2022
Voice Group LLC
  • Developed Solidity contracts for exporting existing artworks to EVM-based chains like Ethereum and Polygon and collaborated on integrating those with off-chain services, which enabled the company to go multichain.
  • Established and generalized Solidity contracts testing practice using the Brownie framework, contracts upgradability testing, and gas-saving techniques among the engineering team.
  • Researched royalties payout techniques of widely known NFT marketplaces and prototyped a payout tracking system.
  • Researched NFT minting standards and tools in Solana blockchain and demonstrated their usage.
Technologies: Solidity, Blockchain, Non-fungible Tokens (NFT), Ethereum, Smart Contracts, Cryptocurrency, Solana, Web3.js, JavaScript, HTML, Software Architecture, GraphQL, Rust, DApps

Software Engineer

2019 - 2020
Facebook
  • Introduced an internal Haskell-based distributed event processing framework to the ads integrity team, which enabled us to process 100M events per second and prevent fraud in real time.
  • Ported existing rule logic to the real-time runtime environment, updated existing infrastructure, and enabled the team to write new rules more easily.
  • Conducted and documented ad fraud research and introduced a number of automated traffic quality monitoring rules.
  • Established an automated decisions logging format suitable for communicating automated decisions to customer-facing teams and helped support teams create new customer response templates.
Technologies: Apache Kafka, Presto, Python, Haskell, JavaScript, Software Architecture

Lead Scala Developer

2015 - 2018
Change Dynamix
  • Designed, coded, and supported microservices for the collection and aggregation of network traffic data.
  • Promoted anomaly detection analysis from its prototype stage into production.
  • Adopted stream processing with Spark Streaming for rule-based traffic analysis.
  • Performed ML-related research and development involving distributed clustering and anomaly detection on multi-billion-sized datasets.
Technologies: AWS Lambda, Amazon Kinesis, Redshift, Parquet, Akka Streams, Akka, Apache Spark, Scala, Software Architecture

Software Developer

2013 - 2015
Freelance
  • Built automated phone and interactive voice response systems.
  • Contributed to the mass-processing of scientific publications.
  • Optimized ad placement in social networks, increasing ad campaign relevance.
Technologies: Apache Kafka, Hadoop, Spark, FreeSWITCH, Asterisk, Ruby, Scala, Java

Lead Software Developer

2012 - 2013
smorodina.com
  • Communicated with client representatives, and collected and formalized requirements.
  • Provided technical leadership to a distributed team of developers.
  • Established the development process and introduced Scrum to the team.
  • Wrote core GIS-related server-side modules of the system.
  • Performed technical screening of candidates and curated the hiring process of new team members.
Technologies: Backbone.js, PostGIS, PostgreSQL, Ruby

Application Security Analyst

2011 - 2012
Luxoft
  • Reviewed Java backend code of web applications in search of vulnerabilities.
  • Consulted developers to help them avoid security-related issues.
  • Performed white-box and black-box penetration testing of major product releases.
  • Introduced CI tools usage in automated security audit process.
  • Conducted seminars on preventing security issues in web development.
Technologies: Java

Software Developer

2009 - 2010
Grid Dynamics
  • Implemented distributed pattern discovery application for genome analysis.
  • Led a remote team to completion of an RIA-front-end for a risk management and decision support system.
  • Automated various applications deployment to cloud platforms.
Technologies: Ruby, Amazon EC2, Java, Erlang

Software Developer

2007 - 2009
Deutsche Bank LTD
  • Maintained and updated an in-memory distributed cache for market stock prices.
  • Coordinated schema changes with remote DBA teams.
  • Provided 3rd-level support of market analysis software.
Technologies: Oracle, Java

Distributed Rule-based Threat Intelligence System

Network traffic monitoring system on big scale, allowing its customers to define monitoring rules in Groovy, which is a main purpose programming language suitable for DSL creation. The system is implemented in Scala as an Apache Spark streaming job with stateful processing, able to accept rule code, code updates and parameters for defined rules. Its output is a stream containing risk events of interest (REI), including incoming network events IDs that triggered them and some explanation of underlying reasoning. Code and parameters updates are accepted in runtime, without interrupting the streaming job.

I acted as a lead developer of the project, my input was designing and implementing the initial POC version with Akka-Streams, designing contracts and interfaces for the incoming arbitrary code, designing and implementing the Spark based version, composing rule code examples library in Groovy, continuous requirement collection and filing tasks and requirements for project modules and accompanying tools. I am quite proud of my authorship of the initial concept and system design.

Scala Rules Updater

This is a Scala object, transforming a stream of updates of Groovy code for business rules defined by analysts into structures broadcasted to Spark worker. It intentionally doesn't contain business logic while showing somewhat tricky and non-typical Spark techniques usage.

Spark ML-based Hybrid Canopy-Fuzzy C-Means Clustering

http://jcse.kiise.org/PublishedPaper/topic_abstract.asp?idx=253
I had a lucky opportunity to implement Hybrid Canopy-Fuzzy C-Means Clustering as a module of Apache Spark ML library. Following the linked research paper, I wrote it in Scala for Apache Spark with BLAS library for faster computations, strictly following the interfaces defined in Spark ML pipelines. That was a fun and enriching experience, and the results of applying the library to images were visually amazing.

Genome Pattern Detector

The goal of the project was creating a scalable tool for a genetics lab, able to detect patterns of configured shape and density/sparsity in multiple genome sequences of related species of broad variety of living creatures, from bacteria to humans, and, naturally, the detected pattern's occurrences in input data.

Our starting point consisted of a white paper by Andrea Califano, describing potential approaches to the task.

We picked Erlang and self-written routines for cloud deployment as our tools. At the moment there were no ready distributed analytics engines to be found, so the main technical challenge was creating efficient task and data parallelization and task intercommunication.

The final result got us some well-deserved cheers from the client: it was able to take packs of human genomes ( quite long sequences compared to most bacterial genomes ) as input and had near-linear scalability, i.e. 2 EC2 instances produced the result ~1.95 times faster than 1, and the progression kept for bigger resources.

My role covered initial research, task planning, collaborative algorithm design, deploy routines and communication to the client. This particular project made me proud of my planning and communication skills.

Sidekiq-Status

https://github.com/utgarda/sidekiq-status
It's a plugin for a well know Ruby-based task processing queue, Sidekiq. The plugin provides the ability to query job status and see the same in a web UI. It's an open source project distributed as a Ruby Gem, has some adoption. I initially coded it up and maintained it until I moved away from Ruby development, then I found worthy maintainers to continue the project. I'm happy to be the founder of an in-demand open source library.

Travel Guide Website

https://smorodina.com/
It's a web resource for travelers, with some innovation on the part of geolocation functionality usage in Postgres DB ( PostGIS). This was my first lead position, where I provided technical guidance to a team of 5 developers and run our Scrum-based development process, collected and formalized requirements from the client. It was done with Ruby-on-Rails, PostgreSQL, PostGIS. The part that makes me proud, apart from successfully transforming initial design into a working product, may not even be essential - it's the interactive map-centric component with colorful buttons and location categories on the front page, produced by our graphic designer in collaboration with myself.

GameJutsu

https://github.com/ChainHackers/GameJutsu
A framework simplifying on-chain game development. It makes use of

• State channels and highly formalized game rules definitions.
• EIP-712 signatures for off-chain game state updates.
• Session keys to allow users to skip sigining every move with their wallets.

GameJutsu is partially based on Magmo's ForceMove whitepaper, and it's aiming at being more developer-friendly and easier to use. ForceMove is a great protocol, it's all science-like and strict—i.e., it's hard to make a mistake and use it in the wrong way—but also it is harder to start using ForceMove for a less prepared programmer. GameJutsu is a bit more flexible and allows for more freedom in client-to-arbiter communication, and presumably requires less sophisticated code in game definition.

The project started as an award-winning entry at ETHOnline2022 submitted by a team of five.

Ledger Support in Bonfida Token Vesting

https://github.com/BoozCoin/token-vesting
Added vesting setup for multiple addresses per transaction, Ledger signing support to Bonfida vesting CLI tool. Also, I added a Python wrapper for scripted airdrops and coached the company stakeholders in using SPL and the new tools.

Languages

Solidity, Bash, Scala, Python, Java, TypeScript, GraphQL, Rust, Haskell, Erlang, Ruby, JavaScript, HTML

Frameworks

Apache Spark, Akka, Spark, Truffle, Hardhat, Jest, Hadoop, Presto

Libraries/APIs

Akka Streams, Spark Streaming, Web3.js, Backbone.js, Spark ML, React

Platforms

Blockchain, Amazon EC2, Docker, Ethereum, AWS Lambda, Linux, Arch Linux, Amazon Web Services (AWS), Oracle, Apache Kafka, Amazon Linux, Visual Studio Code (VS Code)

Other

Ethereum Smart Contracts, Akka Actors, Non-fungible Tokens (NFT), ERC-20, Smart Contracts, DApps, EMR, Amazon Kinesis, Cryptocurrency, Software Architecture, Decentralized Finance (DeFi), Forge, Cybernetics, Akka HTTP, Parquet, Amazon Kinesis Data Firehose, Solana, Artificial Intelligence (AI), Big Data, Machine Learning, Brownie, Architecture, Bitcoin

Tools

Slack, GitHub, Git, GitLab, IntelliJ IDEA, Amazon Elastic MapReduce (EMR), GitLab CI/CD, Spark SQL, IDEA IDE, Asterisk, FreeSWITCH, Bitbucket, Apache Beam, Docker Compose, Cloud Dataflow, PyCharm

Paradigms

Test-driven Development (TDD), Microservices, Microservices Architecture, Functional Programming

Storage

PostgreSQL, PostGIS, Redshift, Google Cloud

2001 - 2003

Associate's Degree in Computational Mathematics and Cybernetics

Moscow State University - Moscow, Russia

SEPTEMBER 2018 - PRESENT

Artificial Intelligence Nanodegree and Specializations

Udacity

AUGUST 2018 - PRESENT

IBM Blockchain Foundation for Developers

Coursera

APRIL 2017 - PRESENT

Big Data Analysis with Scala and Spark

Coursera

NOVEMBER 2016 - PRESENT

Parallel Programming

Coursera

SEPTEMBER 2016 - PRESENT

CS110x: Big Data Analysis with Apache Spark

BerkeleyX

SEPTEMBER 2016 - PRESENT

Functional Program Design in Scala

Coursera

AUGUST 2016 - PRESENT

CS120x: Distributed Machine Learning with Apache Spark

BerkeleyX

AUGUST 2016 - PRESENT

Functional Programming Principles in Scala

Coursera

AUGUST 2015 - PRESENT

CS190.1x: Scalable Machine Learning

BerkeleyX

MAY 2015 - PRESENT

CS188.1x, Artificial Intelligence

BerkeleyX

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring