Viktar Basharymau, Developer in Warsaw, Poland
Viktar is available for hire
Hire Viktar

Viktar Basharymau

Verified Expert  in Engineering

Software Developer

Location
Warsaw, Poland
Toptal Member Since
November 26, 2015

Viktar is a seasoned developer with strong analytical skills and deep knowledge of different fields of computer science. He has production experience in Ruby, JavaScript, C#, and Java, is adept at FP, and is always eager to learn new things. He is an active open source contributor.

Portfolio

The Hamon
Redis, MySQL, PostgreSQL, CoffeeScript, Elasticsearch, Node.js...
Epam Systems
MongoDB, Microsoft SQL Server, MSMQ, Amazon EC2, C#, Java, Hadoop
Epam Systems
Task Parallel Library (TPL), ETL, C#

Experience

Availability

Part-time

Preferred Environment

Git, RubyMine, Vim Text Editor, Sublime Text, MacOS, Ubuntu

The most amazing...

...thing I've delivered is a system build with Rails and Node.js. The system consists of a big Rails app and several smaller Node.js and Ruby services.

Work Experience

Lead Ruby Engineer

2012 - 2015
The Hamon
  • Supported a big old Rails application, constantly improving the code (performance-wise and maintainability-wise) and adding new features. Successfully migrated the app from Rails 2 to Rails 3, and then to Rails 4.
  • Maintained a smaller Rails app for sending email and SMS notifications. This app was used by the main, big app I mentioned earlier.
  • Created a Node.js REST back-end for one of our data sources. We used Elasticsearch to store the data.
  • Built a microservice for PDF generation using Sinatra and Sidekiq.
  • Created a websocket service in order to handle open connections between browsers and our backend. Some of our pages change frequently, so we use websockets messages to push notifications to clients. At the back-end, Redis was used.
  • Created a tool to load-test most critical pieces of our software.
  • Built deployment scripts for our apps in Capistrano 3.
Technologies: Redis, MySQL, PostgreSQL, CoffeeScript, Elasticsearch, Node.js, Ruby on Rails (RoR), Ruby

.NET Key Developer, Java Key Developer

2010 - 2012
Epam Systems
  • Took part in development of .NET-based event processing system (kind of like Google Alerts). The system consisted of a number of microservices communicating between each other via message queues.
  • Implemented a number of quite complex stored procedures on SQL Server side in order to avoid unnecessary round-trips from the app to database and to create a layer of abstraction between DB schema and the application.
  • Build a data loader for the see-results-as-you-type feature. The data loader processed a big pile of gzipped XML using Amazon-based Apache Hadoop cluster, enriched it with data from another data source and built an inverted index in MongoDB.
  • Created a test framework in Ruby and Cucumber to ensure that our REST services work correctly. Our QA team used this framework to build automated tests.
Technologies: MongoDB, Microsoft SQL Server, MSMQ, Amazon EC2, C#, Java, Hadoop

.NET Key Developer

2010 - 2010
Epam Systems
  • Created an ETL framework using C# as a replacement for another proprietary framework as lead developer of a small team.
  • Implemented an ETL tool based on the framework I developed and compared it with the previously-written tool. There was a significant performance boost and noticeable improvements in maintainability.
  • Created a tool to automatically compare output datasets of the app and the newly created app.
Technologies: Task Parallel Library (TPL), ETL, C#

MS SQL Developer, Java Developer, FAST CCR Developer

2007 - 2010
Epam Systems
  • Took part in the creation of a big ETL system written with use of FAST CCR framework in a team of about 20 people. FAST CCR is a proprietary framework written in Java.
  • Optimized performance and created multiple queries and stored procedures for SQL Server.
  • Created a testing framework to test the accuracy of output of our tool, prevent regressions, and measure performance.
  • Replaced parts of FAST CCR that were performance bottlenecks with custom components which I implemented in Java.
  • Developed a number of Ruby scripts to automate routine developer tasks specific to the project.
Technologies: Ruby, Microsoft SQL Server, Wix, FAST ESP, Java

.NET Developer

2007 - 2007
Epam Systems
  • Contributed to the creation of back-ends for a set of financial applications as part of a team of ~20 members. My responsibilities included bug fixing and implementation of new features using C# and ASP.NET.
Technologies: JavaScript, Microsoft SQL Server, C#, Web Services, ASP.NET

WhatTheNat Algorithm

An extended version of binary search written in Haskell, which I call whatTheNat. When given an "f" oracle—i.e., a monotonic function from natural numbers to bool—this algorithm returns the max value for which "f of x" is true.

Why is this useful? If, for example, a user wants to know how many articles are on a website. The site alone does not expose this information but allows us to query pages, e.g., example.com/page/123. If a page has articles, it responds with a 200 error; otherwise, it returns a 404. In other words, we can build an oracle function f, such that: fx=true if "http://example.com/page/" yields 200, and false otherwise. Then, by feeding the function into whatTheNat, we get the number of pages and can quickly obtain the number of articles from this information.

The algorithm involves two stages. In the first stage, it goes right at the exponential scale (1, 2, 4, 8, ... 2^N) until the oracle returns false. Then, it shrinks the rage 1..2^N using binary search into a single value.

Languages

CoffeeScript, Ruby, Domain-specific Languages (DSLs), JavaScript, SQL, Clojure, Haml, Haskell, Java, C#, Elixir

Frameworks

JSON Web Tokens (JWT), Sinatra, Capybara, Ruby on Rails (RoR), Flux, Factory Girl, ASP.NET, Hadoop

Libraries/APIs

Delayed Job, jQuery, Nokogiri, Underscore.js, Task Parallel Library (TPL), Sidekiq, Backbone.js, Ruby on Rails API, Node.js, React, D3.js, Leaflet

Tools

Cucumber, RSpec, Git, Capistrano, RubyMine, Subversion (SVN), wkhtmltopdf, VCR, JBuilder, TortoiseSVN, Sublime Text, Vim Text Editor, Wix

Paradigms

Functional Programming, Test-driven Development (TDD), Metaprogramming, CQRS, Behavior-driven Development (BDD), Continuous Integration (CI), REST, Pair Programming, ETL, Continuous Delivery (CD), Microservices

Platforms

Heroku, Linux, Ubuntu, MacOS, FAST ESP, Docker, DigitalOcean, Amazon EC2

Other

Data Structures, Algorithms, Open Source, Legacy Code, Domain-driven Design (DDD), Ruby Performance, HTTP, Scraping, Web Scraping, WebSockets, Web Services, MSMQ, Servant

Storage

Elasticsearch, Redis, Microsoft SQL Server, MySQL, PostgreSQL, MongoDB

2003 - 2008

Bachelor's Degree in Computer Science

Belarusian State University - Minsk, Belarus

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