Svet Angelov, Developer in Boulder, CO, United States
Svet is available for hire
Hire Svet

Svet Angelov

Verified Expert  in Engineering

Software Developer

Location
Boulder, CO, United States
Toptal Member Since
August 6, 2019

Svet may only have 3 years of experience but thanks to his enthusiasm and can-do attitude, he quickly excels in his career. He joined The Pro's Closet when they were only selling on eBay and buying a few bikes. Through a lot of innovation, creativity, and close work with the other teams, Svet, along with his team have created internal systems which save the company thousands of hours in labor, supporting growth trending at 60% year-over-year.

Portfolio

The Pro's Closet
Amazon Web Services (AWS), Python, Shopify, JavaScript, MySQL, React, Node.js
Fresenius Kabi
Model View Controller (MVC), ASP.NET, RabbitMQ, SQL, JavaScript, C#
Motorola Solutions
Python, C++, C

Experience

Availability

Part-time

Preferred Environment

MySQL Workbench, Git, Visual Studio Code (VS Code), MacOS, Linux

The most amazing...

...thing I've created was an internal app that helps TPC's employees with their tasks, saving an estimated 2,000 man-hours annually in labor.

Work Experience

Software Architect

2017 - PRESENT
The Pro's Closet
  • Implemented a tool which auto-generates SKUs, customers, and POs from submission information (saves thousands of man hours for our purchasing team).
  • Launched, maintain and improve the website www.theproscloset.com.
  • Designed and launched a partner bike trading tool which allows customers to sell their bikes to TPC via a partner website (REI, Pivot Cycles, QBP, more to come).
  • Implemented a tool which allows customers to save the filters they are currently looking at in order to receive email updates when new products matching the criteria are added to the site.
  • Implemented a tool which auto uploads images from photographer computers to Channel Advisor.
  • Implemented a tool which uses machine learning in order to find sold bikes which are most like a given bike to save purchasers time in researching a product.
  • Deployed all of our services and apps in AWS.
  • Wrote scripts that collect data from all of our third-party systems in order to create reports and other internal tools.
Technologies: Amazon Web Services (AWS), Python, Shopify, JavaScript, MySQL, React, Node.js

Senior Software Engineer

2016 - 2017
Fresenius Kabi
  • Switched authentication from IIS Windows authentication to Microsoft Identity which provided a lot more flexibility with logouts, timeouts and working with multiple tabs.
  • Implemented a driver from scratch for one of our legacy devices which uses ASTM protocol for communication, and cleverly made it read asynchronously from a TCP stream (not supported by .NET out of the box).
  • Greatly reduced resource consumption of our system by using asynchronous programming and caching.
  • Reduced the coupling between queues and messages when using RabbitMQ so the interface is a lot more reusable and friendly.
  • Implemented React into our MVC application in order to create complex charts more easily than with jQuery.
Technologies: Model View Controller (MVC), ASP.NET, RabbitMQ, SQL, JavaScript, C#

Software Engineering Intern

2015 - 2015
Motorola Solutions
  • Created a Wireshark Dissector for Google's Protocol buffers.
  • Loaded shared libs at run-time to be able to swap Protobuf Messages dynamically (prevent recompiling).
  • Parsed config files to find resources at run-time (prevent recompiling).
  • Used preprocessor code in order to make the dissector compatible with Win and Linux under one source.
  • Wrote installation scripts in Python.
Technologies: Python, C++, C

Drivetrain

Drivetrain is an internal system used by The Pro's Closet to improve operational efficiency, control workflows and collect operational data. It provides the rails for the whole lifetime of an inventory item.

It starts with purchasing it from a customer via online submission, giving our purchasers the ability to make offers, see history, generate shipping labels and complete a submission upon arrival, automatically generating a SKU, a vendor and a PO for that purchase.

It also provides the operations department with an interface for the inspecting mechanics to evaluate the condition of a bicycle, the servicing mechanics with a screen to service it based on the inspection, the photo department with the ability to automatically upload photos, and it helps the posting department by automatically injecting known data and notes into the catalog. Meanwhile, it creates events for every touch-point, allowing us to create reports and dashboards.

Drivetrain also helps our accounting department by showing which POs need to be paid, and gives the option for bulk payouts. I designed and developed Drivetrain from scratch along with the help of my co-worker who is the front-end developer.

The Pro's Closet

http://www.theproscloset.com
The Pro's Closet's website is in Shopify's ecosystem but we have customized it a great amount. For example, it has custom collection pages that load products from our servers increasing loading speed, allowing for filtering by multiple filters in a category (e.g. size small or medium) as well as filtering by price. We also implemented the ability to save a search. It allows a customer who has used a filter set and not found the bike he is looking for, to save his search and receive daily emails with products matching the criteria. This helps customers find their dream bicycle but it also helps the purchasing department identify what bikes customers are looking for.

Additionally, we have built a custom page for the customer to submit their bikes and thanks to the automation provided by Drivetrain, our internal system, a few buyers are able to process around 1,000 submissions per week.

Lastly, the account page provides customers with the ability to check the status of their submissions, and accept or decline their offers. Also, CPO customers can see their bike's buy-back value and start the submission process.

My role was to collect, store and retrieve the data needed for these processes, as well as to write the REST API.

Apheresis Portal

The Apheresis portal is a system for communicating with aphaeresis medical devices. It collects procedure data from devices, providing filterable reports and dashboards, giving hospital staff the ability to see performance metrics and drill down by ward, operator, and device.

The system establishes 2-way communication with devices in order to monitors live data about currently running procedures and to send patient's data to devices to get them set up for a new procedure.

It also sends webhooks to subscribed servers/listeners when events happen, allowing hospitals to subscribe to their own internal systems.

The portal was broken down into sections, with roles and permissions allowing different users access to resources based on their privileges. I started with Fresenius in the middle of the project lifecycle but found many opportunities for improvement such as using asynchronous programming in order to reduce resources and improve performance, add local and AD authentication, and even wrote a driver to support one of the legacy devices. I came up with a clever way to communicate with the device increasing the possible concurrent connections from 10 (on the old system) to a few thousand.

Asynchronous Stream Reader

To address the challenge of maintaining a persistent TCP connection while avoiding thread blocking and implementing a timeout, I devised a concise and impactful solution. Rather than relying on NetworkStream's ReadAsync method, which doesn't support CancellationToken for timeouts, I implemented a two-level read approach.

In this approach, I utilized a background thread from the thread pool, initiated with Task.Run, to continuously read from the Stream. The received data is then stored in a queue. When the application layer needs to read data, it checks the queue. If the queue is empty, a semaphore is used to initiate a 15-second timeout wait.

To ensure synchronization between the threads, the background thread uses Release() to signal the application thread whenever it writes data to the queue. This allows the application thread to recheck the queue. If data is present, it can be processed; otherwise, the thread returns due to the timeout.

Languages

JavaScript, SQL, C#, Python, C++, C, Java

Libraries/APIs

Node.js, React, Log4Net

Paradigms

Asynchronous Programming, Agile, Model View Controller (MVC)

Other

Front-end Development, OOP Designs, MVC Frameworks, Transmission Control Protocol (TCP)

Frameworks

Express.js, ASP.NET

Tools

Amazon EBS, Git, Logging, MySQL Workbench, RabbitMQ

Platforms

Linux, MacOS, Shopify, Amazon Web Services (AWS), Visual Studio Code (VS Code)

Storage

Amazon S3 (AWS S3), MySQL

2012 - 2016

Bachelor's Degree in Computer Science

University Of Illinois - Chicago - Chicago, IL

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