Andrei Smirnov, Full-stack Developer in Antalya, Turkey
Andrei Smirnov

Full-stack Developer in Antalya, Turkey

Member since September 30, 2014
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 software stacks for mobile, desktop, and web platforms. Andrei is well-versed in a range of languages, including C++, Go, and JavaScript, and the most in-demand frameworks, libraries, and tools.
Andrei is now available for hire

Portfolio

Experience

Location

Antalya, Turkey

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.

Employment

  • Senior Back-end Engineer

    2021 - PRESENT
    A Blockchain Startup
    • Designed and developed a type of blockchain node software using Go.
    • Introduced several improvements to the node's software.
    • Improved code quality and maintainability by incremental refactoring business-critical components.
    Technologies: Go, Blockchain, Solidity
  • 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, 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: RESTful Development, RESTful APIs, 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: Selenium, Mentorship, People Management, SonarQube, C#, Web Services, AngularJS, ASP.NET
  • 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, Prism, 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: Azure, 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++, SUSE
  • 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: J2ME, .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

Experience

  • 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

    Developed a family of UI products and worked in a team.

  • 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

  • .NET Best Practices and Tips by Toptal Developers (Publication)
    This resource contains a collection of .NET best practices and tips provided by our Toptal network members.
  • The Missing Article About Qt Multithreading in C++ (Publication)
    C++ developers strive to build robust multithreaded applications, but multithreading was never an easy thing to do. In this article, Toptal Freelance Qt Developer Andrei Smirnov talks about several scenarios exploring concurrent programming with the Qt framework.
  • A Vital Guide to Qmake (Publication)
    Qmake is a build system tool shipped with Qt library that simplifies the build process across different platforms. In this guide, Freelance Qt Developer Andrei Smirnov describes the most useful qmake features and provides real-world examples for each of them.
  • How to Bootstrap and Create .NET Projects (Publication)
    To create a .NET project from scratch, simply using Visual Studio Wizard is good enough most of the time. However, the default project settings produced by wizards are hardly acceptable for professional teams, as they set too low of a bar on quality. In this article, Toptal Freelance Software Engineer Andrei Smirnov guides us through several standard practices, configuration files, and project settings every developer should apply when starting a new .NET project. Doing this in the very beginning of a project decreases future technical debt and makes product source code readable and professional-looking.
  • Meet Bond, Microsoft Bond - A New Data Serialization Framework (Publication)
    Microsoft Bond is a modern data serialization framework. It provides powerful DSL and flexible protocols, code generators for C++ and C#, efficient protocol implementations for Windows, Linux, and Mac OS X. This article is a quick guide of the features and use of this framework.

Skills

  • Languages

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

    Redux, .NET, Qt, Google Protocol Buffer, Windows Presentation Foundation (WPF), AngularJS, NUnit, ASP.NET Web API, Windows Communication Framework (WCF), Selenium, Chromium Embedded Framework (CEF), ASP.NET, Qt 5
  • Libraries/APIs

    Protobuf, React Redux, React, OpenGL, OpenSSL, Win32 API, ETW, WebRTC, jQuery
  • Tools

    Stash, Jira, ReSharper, Microsoft Visual Studio, Git, TeamCity, TFS, MSBuild, Roslyn, CC.NET, SonarQube, CMake, Qmake, Prism, Pacemaker, JetBrains, Visual Studio, GIS, JSX
  • Paradigms

    Concurrent Programming, Unit Testing, Agile Software Development, Test-driven Development (TDD), REST, MapReduce, RESTful Development
  • Platforms

    Windows, Blockchain, BlackBerry, Linux, Docker, J2ME, MacOS, Azure, Ethereum, Windows Phone
  • Other

    Cryptography, IPC, 3D Graphics, Code Contracts, MSYS2, Web Services, RESTful APIs, Chromium, WebAssembly, People Management, Mentorship, Embedded Systems, Qt3D
  • Storage

    NoSQL, Microsoft SQL Server, SQLite, SUSE, MySQL

Education

  • Specialist Degree in Engineering
    1996 - 2002
    Baltic State Technical University - Saint-Petersburg, Russia

To view more profiles

Join Toptal
Share it with others