Experience

Experience

Software Developer

Mealmind my own project

When you're a software developer, you get paid for what you're good at right now. This creates a vicious cycle when you get more and more specialized knowledge which makes your employer happy but makes it more and more difficult for you to turn to anything new.

This is why in 2017 I left my last cushy job and decided to spend some time expanding my skills in new directions that interested me.

Mealmind has become a polygon for my work to catch up with new IT technologies in multiple areas, including:

  • I improved my Rust, which I used for data processing (tokio, SeaORM), and for backend and frontend as well. Eventually replaced many parts written in JavaScript and Python with Yew and Actix.

  • Did a lot of Deep Learning (neural networks) in general. Had a chance to work with multiple neural network architectures:

    • Various LSTMs,
    • CNNs, like WaveNet (in application to time series), Variational Autoencoders for image processing
    • Transformers for Natural Language Processing, like GPT, BERT, and their derivatives, including long-attention varieties like Reformer and Nyströmformer.
    • Deeply dived in Reinforcement Learning and self-supervised learning.

    In the process I had to do a lot of hyperparameter tuning, regularization and optimization, learn how to structure such ML projects and use pre-training to save on training efforts.

  • Got used to reading, dissecting and reproducing complex research papers (like in the field of Reinforcement Learning and NLP, optimisation theory).

  • Learned GPU-accelerated computing with OpenCL, including writing custom ML kernels.

  • Got experience in deployment with containers, their management and orchestration, using Docker, Kubernetes and Ansible.

  • Although not new to monitoring, this time I had to build it myself, using Eclipse Mosquitto, Grafana and Telegraf.

Sadly, due to the... let's say, global political and market changes, I had to abandon the project. Still, I'm grateful for the broad experience it gave to me.

Technologies: Python, Rust, Tensorflow, PyTorch, OpenCL, Kubernetes, Ansible
July 2018 - February 2023

Senior Software Developer

IPONWEB BIDSWITCH

IPONWEB specialises in programmatic and real-time advertising technology and infrastructure. One of its divisions, BidSwitch was created to help solve many of the underlying technical challenges and inefficiencies that hamper platform interconnectivity and trading at the infrastructure level.

Originally I started as a web frontend and backend developer using Python, Django, and Angular.

During my time there, I helped to start several internal projects that later grew into new products or parts of them: most notably BidSwitch UI, internal financial reporting, ad traffic forecasting, automatic creative approval, some APIs for clients.

Last years in the company I spent primarily focused on high-load backend projects, related to processing and analyzing large amounts of data and communicating with other services. During this time I used C++ and Python, had extensive experience with PostgreSQL and non-relational clusters of Cassandra and MongoDB, as well as many critical parts of modern IT infrastructure, including automatic monitoring, testing, real-time error reporting, continuous integration and delivery.

Technologies: Python, C++, CassandraDB, PostgreSQL, MongoDB, Django, Angular, Jenkins, Sentry, Mercurial
April 2012 - February 2017

Senior Software Developer (as a freelancer)

Designed and implemented a whole online market of actors playing the role of Santa (Ded Moroz in Russia) and providing adjacent services. Integrated the project with online payment system QIWI. Technologies: Python, Django, JavaScript, HTML, CSS, PostgreSQL.

Technologies: Python, Django, JavaScript, PostgreSQL
May 2011 - November 2011

Smart Links is an marketing and advertising company. There I was responsible for

  1. Design and implementation of high-performance distributed morphology system for Russian and Ukrainian languages. Due to flexibility of these languages, naive word matching and search becomes impossible. Morphological system relies on a complex tree of language rules and dictionaries to convert words to their infinitive forms in real time.
  2. Design and implementation of a distributed HTML content analyzer for advertisement system, along with Python bindings for some parts of it.

The system was written in C and relied on ZeroMQ to provide connectivity. It was capable of processing hundreds of documents (HTML pages) per second in Russian or Ukrainian languages on a typical home PC, normalizing texts and identifying key parts that could be targeted with ads.

Technologies: C, ZeroMQ, Python bindings
December 2010 - June 2011

{% dated_content( title="Senior Software Developer (as a freelancer)", lead="Artela.ru (startup)", date="February 2010 - November 2010" tech="Python, Django, JavaScript, HTML, CSS, PostgreSQL", ) %} Was responsible for design and implementation of an architecture for a universal store of digital services like VoIP telephony, web domains, hosting.

This was my first commercial project where I could apply insights I learned from Alan Cooper's book "About Face" and other similar publications. I got to practice writing user stories and design the whole structure of user interface.

Integrated the store with several online payment systems: Webmoney, Yandex Money and Paypal. {% end %}

{% dated_content( title="Senior Software Developer (as a contractor)", lead="Gzt.ru news agency", date="February 2009 - September 2009", tech="Python, Django, JavaScript, MySQL, PostgreSQL, Nginx, HTML, CSS, SVN, Trac", ) %} Design and development of both the backend and partially the frontend (heavily customized Django admin CMS) parts of the portal.

Due to high amounts of trafic and very dynamic nature of the content, the project required a carefully crafted data model, complex fine-tuned SQL queries, and various caches at different levels. {% end %}

Software Developer Co-founder

Domik63.ru Real Estate Information Portal

Was responsible for the development of both the backend and the frontend parts of the portal, and then for its maintenance & support.

Integrated portal's database with multiple real estate agencies by providing tools for regular updates of information through regular spreadsheets.

Technologies: Python, Django, PostgreSQL.

October 2007 - January 2009

Lead Software Developer

Inter-M, Web Design Studio

Backend Web developer. Technologies: Python, Django, PostgreSQL, Linux, Mercurial.

May 2007 - August 2007

Senior Software Developer

Unkom, Web Application Development Company

Originally came as a backend web developer, later transitioning to PHP and Java. Created a CMS system and a forum engine used by the company as a base for multiple websites for businesses and government organizations. Notably, created backend for the main (MuzTV)[https://muz-tv.ru] site and forum.

Main technologies used: Perl, PHP, .NET, Java and MySQL with PostgreSQL. OS: Linux (mostly) / Windows

February 2005 - April 2007