Andrei Smirnov, Developer in Ankara, Turkey
Andrei is available for hire
Hire Andrei

Andrei Smirnov

Verified Expert  in Engineering

Full-stack Developer

Ankara, Turkey

Toptal member since December 11, 2014

Bio

Andrei is a passionate full-stack software engineer with 20 years of experience who worked for leading brands like Microsoft, EMC, Motorola, and Deutsche Bank. He's built many successful projects utilizing various mobile, desktop, and web software stacks. Andrei is well-versed in various languages, including C++, Go, and JavaScript, and the most in-demand frameworks, libraries, and tools.

Portfolio

A Blockchain Startup
Go, Blockchain, Solidity, Ethereum Smart Contracts, PostgreSQL...
OnyxCorp
WebAssembly (Wasm), WebRTC, Protobuf, Chromium, CMake, QML, JavaScript...
DreamFactory
RESTful Development, REST APIs, C#, .NET

Experience

Availability

Part-time

Preferred Environment

Windows, Linux, MacOS

The most amazing...

...thing I've coded is a secure messaging platform that leverages modern post-quantum crypto algorithms.

Work Experience

Senior Blockchain Engineer

2021 - PRESENT
A Blockchain Startup
  • Designed and developed various blockchain projects.
  • Distributed systems design, observability, and alerting.
  • Integrated various 3rd party crypto/blockchain projects.
Technologies: Go, Blockchain, Solidity, Ethereum Smart Contracts, PostgreSQL, Decentralized Finance (DeFi), Grafana

Lead Software Engineer

2015 - 2021
OnyxCorp
  • Designed and developed a post-quantum, secure messaging system that included client framework, client applications, back end, and web portal management.
  • Refactored legacy crypto code using the newest C++17 features, with full test coverage and a new build system with CMake and Conan.
  • Designed and integrated voice and video calls with WebRTC.
  • Added support to WebAssembly (Emscripten) to enable messaging applications to run in browsers.
  • Mentored new team members, conducted technical webinars, and maintained detailed documentation.
Technologies: WebAssembly (Wasm), WebRTC, Protobuf, Chromium, CMake, QML, JavaScript, Cryptography, Go, React, Qt, C++

Freelance Software Engineer

2015 - 2015
DreamFactory
  • Designed and developed .NET SDK for DreamFactory API: https://github.com/dreamfactorysoftware/.net-sdk.
Technologies: REST APIs, RESTful Development, C#, .NET

Technical Lead

2014 - 2015
Return On Intelligence
  • Designed and developed a web portal for employee benefits management (insurance, retirement, etc.).
  • Introduced a web services mocking approach to ease local debugging and troubleshooting.
  • Enabled automatic testing using Selenium. Implemented and enforced product quality tools.
  • Dramatically improved corporate build and deployment strategy to minimize day-to-day efforts.
Technologies: Mentorship, People Management, SonarQube, C#, Web Services, AngularJS

Lead Application Developer

2013 - 2014
Deutsche Bank
  • Designed and developed a metadata-driven framework for desktop interoperability and enabled several existing applications to use this framework. Currently, all Autobahn software is using this framework called Synapse.
  • Enhanced WPF applications (FX trading) for investment banking in respect to performance, security, and code quality.
  • Developed a number of WPF controls (MVVM) for banking applications.
Technologies: Roslyn, Windows Presentation Foundation (WPF), .NET, C#

Software Developer

2010 - 2012
Microsoft
  • Developed a rapid data serialization SDK (similar to Google ProtoBuf), including the C# code generator for it: Github.com/microsoft/bond.
  • Built an object-oriented logging framework (business data logging) for in-house cloud infrastructure, now used by AdCenter and Bing.
  • Implemented a remote-procedure calls (RPC) engine and toolset for a brand new key-value store (NoSQL) currently used by Azure.
Technologies: MapReduce, C++, NoSQL, .NET, C#

Senior Software Engineer

2009 - 2010
EMC Corporation
  • Worked on a high-availability Linux-based cluster (HA), integrating and configuring Pacemaker for network-attached storage (NAS).
  • Introduced cgroups feature usage to the HA cluster.
  • Developed an out-of-memory (or overcommit) monitoring daemon in C.
Technologies: Pacemaker, Linux, C, C++

Senior Software Engineer

2006 - 2009
Motorola, Inc.
  • Worked on several Motorola mobile device platforms, implementing security features (JSR177), branding services (T-Mobile MyFaves), etc.
  • Integrated Adobe Flash Lite player to the mainstream Motorola mobile platform (P2K). Collaborated with Adobe.
  • Participated in AJAR mobile platform development.
  • Developed a number of internal tools for embedded software development in C# and C++.
Technologies: .NET, C++

Senior Software Engineer

2002 - 2005
The Institute of Telecommunications
  • Designed and developed a 3D engine for GIS (Geo informational services) in C++, STL, and OpenGL.
  • Developed a cross-platform computational geometry math library in C++.
  • Designed and built a full-featured application suite for manipulating GIS data.
  • Programmed a large-images processing engine (satellite imagery) in C and C++.
Technologies: GIS, Qt, OpenGL, 3D Graphics, C++, C

REVERSCREEN

https://github.com/pinebit/reverscreen
Invented, designed, and developed a concept of a snipping tool that provides automatic object cropping by leveraging computer vision algorithms. This tool is actively used by UX/UI designers.
Stack: Qt, C++, OpenCV library, and more.

DB Autobahn

https://autobahn.db.com
Participated in Autobahn FX products development: from protocols to user interface (.NET/WPF).
I designed and implemented a flexible interoperability protocol that connected many Autobahn products (existing and new). This system is called Synpase and is currently in production and driving the Autobahn ecosystem.

Demoscene: 4k Intro

http://www.pouet.net/prod.php?which=54415
Created a home-made project using C and OpenGL, in 4096 bytes.

Sochi - 3D Engine for GIS

http://www.youtube.com/watch?v=bNE4WX1v-W8#t=204
Developed a cross-platform 3D engine in C/C++ with OpenGL. It was used by Russian DoDF.

Computational Geometry API for Nokia Gate5 GmbH

http://www.youtube.com/watch?v=Yh1eUudkxgc
Designed and developed a computational geometry library for 2D/3D graphics, used in a fork of Nokia Maps.

Autobahn Toolbar

https://www.toolbar.autobahn.db.com
Implemented core functionality of the Toolbar, a central UX component used by many trading apps.

Vault

https://github.com/pinebit/vault
A tiny C++ library that manages password-protected files, with a very simple API to use.

Imagine you needed to persist some user-sensitive information in a password-protected file—this little library addresses this need.

React-CR

https://github.com/pinebit/react-cr
A tiny library for conditional rendering in JSX. The idea here was to express conditions declaratively (JSX style) rather than inject conditional JavaScript code. The library is used in some real projects in production.

The Largest App

https://github.com/pinebit/largestapp
A desktop application for finding the largest files and folders on your computer. The idea was to build a primer app using Qt5/QML. To make it more useful, I made it search for large files on the computer.
Stack: C++ and Qt5 with QML UI.

Jet Pipes

https://github.com/pinebit/JetPipes
Yet another "pipes screensaver" using Qt3D. Originally this was just a primer on Qt3D usage. Still, later I added "guided extrusion math" algorithms that I built for another project, and eventually, this was converted into this nice application for fun.
Stack: C++, Qt 5, Qt3D.

Yet Another Ethereum Brute Force Tool

https://github.com/pinebit/eth-brute-force
A tiny command-line app to find the private key matching the given ETH address.

Every other blockchain engineer implements this exercise, for fun.

If you are really serious about using this tool, then bear in mind the probability of encountering a private key that corresponds to someone else’s Ethereum address is around 1 in 2^256. To cover just 1% of that keyspace, even if we used computing resources that would allow us to generate 100 trillion keys per second, it would take us roughly years. Eventually, your electricity bills and the cost of hardware you used will exceed the benefit of "hacking" someone's address. You've been warned.

ETH Transactions Listener

https://github.com/pinebit/eth-listener
This is a simple console application written in Go and using Geth API. The purpose is rather simple: to watch for any transactions for the specified ETH addresses, including smart contracts (tokens).
Stack: Go, Geth
1996 - 2002

Specialist Degree in Engineering

Baltic State Technical University - Saint-Petersburg, Russia

Libraries/APIs

Protobuf, React Redux, React, OpenGL, OpenSSL, Win32 API, WebRTC, REST APIs, jQuery

Tools

Stash, Jira, ReSharper, Microsoft Visual Studio, Git, Roslyn, CC.NET, SonarQube, CMake, Qmake, Grafana, Pacemaker, JetBrains, Visual Studio, GIS, JSX

Languages

C, Go, QML, C++, C#, UML, JavaScript, Visual Basic for Applications (VBA), Domain-specific Languages (DSLs), Python 3, SQL, Solidity, C++17

Frameworks

Redux, .NET, Qt, Google Protocol Buffer, Windows Presentation Foundation (WPF), AngularJS, NUnit, ASP.NET Web API, Chromium Embedded Framework (CEF), Qt 5

Paradigms

Concurrent Programming, Unit Testing, Test-driven Development (TDD), REST, MapReduce, RESTful Development

Platforms

Windows, Blockchain, BlackBerry, Linux, Docker, MacOS, Ethereum, Windows Phone

Storage

NoSQL, Microsoft SQL Server, SQLite, PostgreSQL, MySQL, RocksDB

Other

Cryptography, IPC, WebSockets, APIs, 3D Graphics, Windows Communication Foundation (WCF), Code Contracts, MSYS2, Cryptocurrency, Web3, Ethers.js, Prometheus, Web Services, Chromium, WebAssembly (Wasm), People Management, Mentorship, Embedded Systems, Qt 3D, Custom Protocols, App UI, Ethereum Smart Contracts, Decentralized Finance (DeFi), Interviewing

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