Grigory Hatsevich's programming portfolio

>> Grigory Hatsevich's CV

Full list of projects:

I came up with the product idea, developed the product, and it was used by multiple users:
I developed the product according to the client's requests:
I came up with the product idea, developed the product, and used it at work or personally:
I came up with the product idea and developed the product as a hobby project:

Details and demos:

Doit.js Full-stack framework and interactive development environment. Inspired by Smalltalk environment and platform. It reimagines the application code's structure by leveraging the HTML element tree for modularization. Details and features: • I use HTML elements tree as a way to organize and modularize code: any HTML element in the template can have JavaScript code associated with it. An element can conveniently pass data to children, which leads to a simple and succinct application code. • Interactive development environment: you can click on any HTML element in the browser to edit its associated JavaScript code and apply changes live without restarting the app. While editing code, you can select any expression and evaluate it in the console by pressing a keyboard shortcut. There are other features of the environment: color highlighting of elements based on whether they have code, conveniently traversing the tree of elements with keyboard shortcuts etc. • Direct integration with the database: when writing front-end code, you can write queries directly in terms of database entities, without the need to write separate back-end code. • Reactivity out of the box: graph of dependencies between elements and database tables is drawn automatically; and each time your program writes to some table of the database, the elements that depend on that table will be automatically updated.
Google Chrome extension "Read aloud with auto language detection" (HTML, CSS, Javascript), 2020 1000+ users Open in Chrome Web Store Text-to-speech web reader. This extension helps you read aloud websites by using Google Chrome text-to-speech engine. It can automatically detect the language of current sentence (currently English or Russian) and can be conveniently controlled with keyboard shortcuts.
Chat app (Node.js, SQLite, WebSockets, HTML, CSS, Javascript), 2019 Multi-user realtime web app.
Websites (HTML, CSS, Javascript)
A landing page
Interactive fiction website, 2017 This was my first freelance project. It is a trailer website for the textbook "Lectures on Microeconomics: The Big Questions Approach" (MIT Press) by Romans Pancs with animated interactive fiction
Serverless web apps (HTML, CSS, Javascript)
Song player for Google Chrome, 2017 Open This audio player provides special functionality and convenient user interface that helps quickly learn songs (to sing and to play accompaniment on guitar or piano): • breaking song into fragments by pressing a button at the right moment during listening • loop a fragment • play current fragment once by pressing a button • go to next/previous fragment • change speed while playing I also used File and Directory Entries API so that a user can conveniently add local audio files by drag-and-dropping a folder to the webpage.
Voice interface, 2017 A voice robot for children which teaches them how to ask politely. He can play songs but only if one asks him politely.
Browser userscripts (HTML, CSS, Javascript)
On-selection translator, 2017 A plug-in for that adds on-selection translation functionality. It helps non-English-speaking students learn math and English simultaneously.
Janko piano emulator, 2016 Janko piano is an alternative piano keyboard layout which has several benefits that makes learning it much easier than learning traditional piano keyboard. This app is an emulator that lets you play Janko layout on a computer keyboard, assess its benefits and just enjoy playing it.
Minkowski sum visualizer, 2016 This is a tool that helps students to more deeply understand one of the basic concepts in economics (production possibilities sets) by visually demonstrating how to build the combined set from two given individual sets. (In math terms it is equivalent to Minkowski sum, or vector sum of two sets.) I did this project in Scratch to look at what it is capable of.