Lev Yastrebov, .NET Developer in Saint Petersburg, Russia
Lev Yastrebov

.NET Developer in Saint Petersburg, Russia

Member since January 8, 2020
Lev is an accomplished C# and .NET developer who leverages test-driven development, static analysis, and in-depth knowledge of technologies to solve business tasks with effective, robust, and clean code. Lev has strong abstract thinking abilities, which he applies to the development of anything from complex algorithms to web apps, frameworks, and APIs.
Lev is now available for hire

Portfolio

Experience

Location

Saint Petersburg, Russia

Availability

Part-time

Preferred Environment

.NET, Visual Studio 2019

The most amazing...

...and science-intensive algorithm I've created constructed realistic 3D surfaces of the sea bottom based on incomplete and conflicting data from nautical charts.

Employment

  • Freelance Software Engineer

    2020 - PRESENT
    Toptal Clients
    • Provided ongoing services as a remote developer for Toptal clients using C#, .NET, and Algorithms.
    • Designed architecture and implemented a variety of applications from spatial data processing algorithms to sophisticated enterprise applications.
    • Implemented automated tests: unit tests, integration tests, functional tests, and automated UI tests.
    • Explored the most effective technologies and came up with ideas to achieve the client's business requirements and goals.
    • Reported status updates and plans daily to appropriate audiences.
    Technologies: .NET Core, Moq, xUnit, Design Patterns, Matrix Algebra, Computational Geometry, Geometry, Algorithms, SQL, APIs, C#, .NET, Software Architecture
  • Freelance Software Engineer

    2020 - 2021
    Client via Toptal
    • Developed an application using C# that processed spatial datasets with up to 1M points with streets, buildings, and luminaires, to calculate street illuminance. Also, it optimized the set of luminaires to achieve the most energy-efficient lighting.
    • Modernized an existing full-stack web application using JavaScript, Django REST Framework, and PostgreSQL by adding and utilizing a new ASP.NET Core back end, which performed fast local lighting calculations.
    • Helped the client to recover broken web apps in Google App Engine and Google Compute Engine (GCE).
    • Established the complete CI/CD pipeline on GitHub Actions with automatic releases and unit, integrational, and functional tests.
    Technologies: C#, C#.NET, .NET 5, .NET, Algorithms, Computational Geometry, Matrix Algebra, ASP.NET Core, Back-end, Google, Google Cloud, Google Cloud Console, Google App Engine, Google Compute Engine (GCE), GitHub, API Design, PostgreSQL, DXF, Testing, Unit Testing, Integration Testing, E2E Testing, Dependency Injection, DI, Design Patterns, Console Apps, Web API, Web, xUnit, xUnit.net, Moq, Software Architecture
  • Senior Software Engineer

    2012 - 2020
    Wärtsilä Voyage (formerly Transas)
    • Designed and implemented the science-intensive algorithm of 3D sea bottom modeling based on the data from the nautical charts. I read dozens of scientific articles in English to understand and implement suggested algorithms using C++.
    • Created the front end for a web-based internal system for chart database management, which handled more than 13,000 charts. I used JavaScript with Vue.js and TypeScript to build a useful web application with unit test and integration tests included.
    • Designed architecture for the plug-in interaction system of the 2D editor platform for cartographic data using design principles, best practices, and C#. Five internal and external products were successfully built on that platform.
    • Engineered functionality in 2D cartographic data editor for interactive texture mapping of land objects using OpenGL, C++, and C#. Achieved acceleration of texture adjustment by an average of eight times.
    • Improved Azure Application Insights telemetry coverage and structure for a large 177 projects included and complicated ASP.NET based fleet management service back end.
    • Implemented diff and merge functionality for cartographic data, where objects could have changed properties and positions. The nav data update process sped up from hours to minutes by eliminating manual objects lookup and comparison.
    • Created an internal MVVM like WPF framework that removed all the boilerplate from dialogs and took over work with apply cancel actions, validation, and layout serialization. That dropped the amount of code by 3-5 times and made it more manageable.
    • Introduced integration testing for the complicated desktop application written using C#, C++, C++/CLI, and registration-free COM. The main problem was to run tests in single-threaded apartments and to write the custom assembly activation context.
    Technologies: SQL, .NET, Python, OpenGL, xUnit, TypeScript, JavaScript, Windows Presentation Foundation (WPF), C++/CLI, C++, C#
  • Software Engineer

    2011 - 2012
    The State Financed Institution for Investment Management
    • Studied network interaction basics and connected the organization to the system of interdepartmental electronic interaction using C# and WCF. It was a step towards creating e-government.
    • Explored a complicated business process and developed an electronic chart module for the organization's document flow system. It helped nearly 50 employees during their jobs and decision-making process.
    • Worked on other features, suggested, and implemented UI/UX ideas.
    Technologies: Windows Communication Framework (WCF), SQL Server 2008, Windows Presentation Foundation (WPF), C#
  • IT Engineer | CNC Engineer

    2007 - 2010
    Promenergo
    • Set up domain and active directory in the corporative network.
    • Mastered working with the CNC punching machine Muratec Motorum-2044 EZ as an operator, maintainer, and program writing engineer. Mentored newcomers on how to run it and make optimal programs.
    • Mastered working with other CNC machines—lathe, bending machine, and plasma cutting machine. My knowledge of electronics helped to repair the PCB of the bending machine when it stopped to allow for sustained production.
    Technologies: CAD, CNC, AutoCAD, SOLIDWORKS, Windows Server 2008

Experience

  • Algorithm of 3D Sea Bottom Modeling
    https://docs.google.com/presentation/d/138W8_Gpdq-lEifPeqPptTh9_3cDdYWZsX8MEU9zg26c

    I created the algorithm of 3D sea bottom modeling based on the data from nautical charts. Charts are the unique source of the navigational data because it has the best sea coverage. However, if you build a triangulated surface using raw chart data, it will be almost useless because charts have simplified, only essential, bathymetry data. Thus, the surface will have large flat areas. So I read a lot of scientific articles about surface interpolating methods, tested them, and picked the most suitable.

    Another big problem was physical conflicts in the chart data. For example, one chart point can have three levels. To overcome this, I developed a special method that resolves the conflicts and doesn't make conflicts with chart data.

    Moreover, I added the self-testing mode to check and adjust the algorithm. My testing tool picked charts with different levels of details on the same area, ran my algorithm on less detailed, and then compared the results with a more detailed chart.

    As a result, my algorithm made possible connecting charts with different isobath levels to create a seamless sea model, which is used for automatic routing for ships. Also, it is useful in oceanography, hydrology, fishing, and other applications.

  • Sample Web API application
    https://github.com/LevYas/DotnetBackendSample

    I developed an example of a fully-functional Web API with users, roles, authentication, integration with another API, and a lot of tests. I also set up a CI pipeline, which builds and runs all the tests, including the tests against the real database.

    Using this application, users can create an account, log in, and store some food records to track sugar consumption. If the user does not provide the sugar amount, the app will fetch it from a nutrition data provider. Also, users can access API to check how much sugar they ate during the current day.

    I made this educational project to show how to build custom lightweight authentication and authorization without using the full-blown technologies like ASP.NET Core Identity and how to integrate different things into one working and robust application.

  • Highly Efficient Interval Map
    https://github.com/LevYas/CodingProblems/blob/master/CppCodingProblems/IntervalMap.h

    The interval map is a data structure that associates intervals of keys with values, where the key can be any comparable type with defined lowest limit, and the value can be anything checkable for equality.
    I developed an extremely efficient algorithm for assigning values; it uses only two relatively expensive O(log N) operations to find range bounds. It utilizes precise iterator arithmetic to locate all other positions.
    In that case, it's very important to carefully test this algorithm to be sure, that it works properly. To accomplish that, I used test-driven development alongside with property-based testing instead of example-based testing. That means to check that the object under tests has specific properties after the performed operation instead of comparing result data with examples. Thanks to this technique, it was easy to write clear and concise tests to cover all possible data variations.
    Finally, I successfully built a complex, efficient algorithm that I'm sure works correctly.

  • 8 Automated Testing Best Practices for a Positive Testing Experience (Publication)
    Testing doesn’t have to be tedious. With these automated testing best practices and tips, software engineers can leverage automated tests to boost their productivity and make their work more enjoyable.

Skills

  • Languages

    C#, C#.NET, TypeScript, C++, XML, C++/CLI, Python, SQL, Python 3, JavaScript, CSS, T-SQL, Transact-SQL, F#
  • Frameworks

    .NET, Windows Presentation Foundation (WPF), .NET Core, ASP.NET Core, Entity Framework Core, NUnit, Newtonsoft JSON, Json.NET, Windows Communication Framework (WCF), ASP.NET, Swagger, Cypress.io, Google Test, .NET 5
  • Tools

    Visual Studio, Visual Studio 2019, xUnit, xUnit.net, ReSharper, Postman, WireMock, AutoCAD, Jira, Git, CAD, SendGrid, Bitbucket, GitHub, Subversion (SVN), Jenkins, SOLIDWORKS, Azure Application Insights, Google Cloud Console, Google Compute Engine (GCE)
  • Paradigms

    Unit Testing, Object-oriented Programming (OOP), Refactoring, Model View Viewmodel (MVVM), Gang of Four (GOF) Design Patterns, Agile Software Development, Concurrent Programming, Test-driven Development (TDD), REST, Dependency Injection, Waterfall Development, Extreme Programming, Inversion of Control, Design Patterns, REST API Architecture, Scrum, E2E Testing, Testing, Functional Programming
  • Platforms

    Windows, Visual Studio Code, Windows Server 2008, Docker, Google App Engine, Web, Blockchain
  • Other

    Data Structures, Debugging, Design Principles, SOLID Principles, Profiling, COM, API Design, DI, Back-end, RESTful Web Services, Computational Geometry, Software Architecture, APIs, Algorithms, Geometry, Matrix Algebra, CNC, Containers, Containerization, Google, DXF, Integration Testing, Console Apps, Bitcoin
  • Libraries/APIs

    Vue.js, Moq, LeafletJS, LINQ, Web API, SendGrid API, SignalR, AutoMapper, OpenGL
  • Storage

    JSON, SQL Server 2008, SQL Server Management Studio, Microsoft SQL Server, Relational Databases, Google Cloud, PostgreSQL

Education

  • Master's Degree in Industrial Power Distribution
    2006 - 2011
    Moscow Polytechnic University - Cheboxary, Russia

Certifications

  • Blockchain and Bitcoin Fundamentals
    SEPTEMBER 2021 - PRESENT
    Udemy
  • F# From the Ground Up
    AUGUST 2021 - PRESENT
    Udemy

To view more profiles

Join Toptal
Share it with others