Hello I'm

Joseph Demyanovskiy

About me
Software Development Engineer in Test (SDET)

Detail-oriented SDET with 4 years of experience in developing and executing automated tests using C# and Selenium. Proven track record of ensuring software quality by implementing effective testing strategies and integrating them into CI/CD pipelines.

Always eager to learn, I'm constantly exploring new technologies to grow as a software engineer - Check out my projects below!
Projects
Recreational project to introduce myself to TypeScript, NestJS, and React. This application provides a simple and efficient way for users to manage their tasks. Users can create new tasks, mark them as complete, edit existing task titles/descriptions, and delete tasks they no longer need.

Technology Stack

  • TypeScript
  • NestJS / NodeJS
  • React + Vive
  • PostgreSQL
  • EC2 Ubuntu Server

Features:

  • User Login:
    • Users can log in using their username. No email or password required for simplicity but will be added in a future update.
    • Will add JWT (JSON Web Tokens) for user authentication in the future.
  • Task Management:
    • Create Tasks: Users can create new tasks, specifying a title and description.
    • View Tasks: Users can view a list of their tasks, displayed with relevant information (e.g., title, description, completion status).
    • Edit Tasks: Users can edit existing tasks, modifying the title, description, and completion status.
    • Delete Tasks: Users can delete tasks they no longer need.
    • Task Status: Tasks can have a completion status which can be edited.
  • User Interface:
    • Responsive Design: The UI adapts to different screen sizes (desktop, tablet, mobile).
    • Intuitive and User-Friendly: Easy-to-use interface for managing tasks.
  • Data Persistence:
    • Tasks are stored in a PostgreSQL database so they are not lost when the user closes the browser.
  • Backend API:
    • A well-documented RESTful API provides the backend functionality for the frontend. See github documentation
An introduction to Swift and SwiftUI. Weather data is pulled through OpenWeather's APIs, parsing the JSON formatted data using decodable.

Features

  • SwiftUI
  • API
  • JSON parsing using Decodable
  • Model View ViewModel (MVVM)
  • NavigationView + NavigationLink transitions
  • Theme change based on sunset time
  • 5-day forecast with additional details
  • Hourly forecast
A mobile trade market app for the popular third person MMO Warframe. Pulling data from warframe.market the app displays item information to the user that might be part of the set.

Features

  • Kotlin
  • API
  • JSON to data class
  • User authentication
  • SharedPreferences storage
  • XML Layouts
    • Navigation Drawers
    • Recycler View
    • Fragments
  • Item sort by search

Features

  • Kotlin
  • API
  • JSON to data class
  • User authentication
  • SharedPreferences storage
  • XML Layouts
  • Item sort

Stated Problem:

Given a CSV of packages and their delivery locations, and a table of distances between locations, create an algorithm for the Western Governors University Parcel Service (WGUPS) to determine the best route and delivery distribution. The Salt Lake City route is covered by three trucks, two drivers, and has a daily average of approximately 40 packages. Add functionality to query a packages data including with a given timeframe.

Features:

  • CSV File Parsing
  • Data hashing
  • Nearest neighbor algorithm
  • Space-time complexity evaluation using Big O notation

Assumptions:

  • Each truck can carry a maximum of 16 packages.
  • Trucks travel at an average speed of 18 miles per hour.
  • Trucks have a “infinite amount of gas” with no need to stop.
  • Each driver stays with the same truck as long as that truck is in service.
  • Drivers leave the hub at 8:00 a.m., with the truck loaded, and can return to the hub for packages if needed. The day ends when all 40 packages have been delivered.
  • Delivery time is instantaneous, i.e., no time passes while at a delivery (that time is factored into the average speed of the trucks).
  • There is up to one special note for each package.
  • The wrong delivery address for package #9, Third District Juvenile Court, will be corrected at 10:20 a.m. The correct address is 410 S State St., Salt Lake City, UT 84111.
  • The package ID is unique; there are no collisions.

Restrictions:

  • Package data must be stored via hashing.
  • Some of the packages must be delivered with other packages.
  • Some packages must be delivered with other packages.
  • Some of the packages must be delivered by a specific truck.
  • Some packages have a specific deadline by which it must be delivered.
  • Some of the packages are delayed in arriving to the depot and will not be available for pickup until later in the day.

Psuedocode:

  1. Go through package list and insert them into hash table
    • A separate distances CSV contains distances from each location to the other location by ID
    • i.e. Distance from location 10 -> location 27 is 6.0 miles
  2. Set package priority
    • Go through each package and set priority value based on package deadline
    • If package deadline is 9:00am, set priority to 1
    • If package deadline is 10:30am, set priority to 2
    • Else set package priority to 3
  3. Run simulation
    • Load any hard-required packages into associated truck (i.e. package #36 and #38 are required to be on Truck #2)
    • Sort package list by priority
    • Load trucks by priority
    • Start truck 1 and 2 delivery at 8:00am, and truck 3 at 10:20am
      • For each truck's delivery process:
      • Sort loaded packages by priorty
      • Go through each package and find the closest located package
      • Drive to package's location
      • Add to truck's drive and time stats, and pop package from queue
  4. Display UI for user to read simulation stats

Proof of concept:

All package statuses between 8:35 and 9:25

All package statuses between 8:35 and 9:25

All package statuses between 9:35 and 10:25

All package statuses between 9:35 and 10:25

All package statuses between 12:03 and 13:12

All package statuses between 12:03 and 13:12

Contact me