pleshevski.ru/dist/eng/works.html

43 lines
21 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en-US">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-rc.14" />
<style>
:root {
--c-bg: #fff;
}
html.dark {
--c-bg: #22272e;
}
html,
body {
background-color: var(--c-bg);
}
</style>
<script>
const userMode = localStorage.getItem('vuepress-color-scheme')
const systemDarkMode =
window.matchMedia &&
window.matchMedia('(prefers-color-scheme: dark)').matches
if (userMode === 'light') {
document.documentElement.dataset.theme = 'light'
} else if (userMode === 'dark' || systemDarkMode) {
document.documentElement.classList.toggle('dark', true)
document.documentElement.dataset.theme = 'dark'
}
</script>
<link rel="alternate" hreflang="ru-ru" href="https://pleshevski.ru/works.html"><meta property="og:url" content="https://pleshevski.ru/eng/works.html"><meta property="og:site_name" content="Dmitriy Pleshevskiy"><meta property="og:title" content="Works"><meta property="og:type" content="website"><meta property="og:locale" content="en-US"><meta property="og:locale:alternate" content="ru-RU"><meta property="og:updated_time" content="2024-07-25T12:12:09.000Z"><meta property="article:modified_time" content="2024-07-25T12:12:09.000Z"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Works"}</script><title>Works | Dmitriy Pleshevskiy</title><meta name="description" content=" ">
<link rel="preload" href="/assets/style-LjaJbYtv.css" as="style"><link rel="stylesheet" href="/assets/style-LjaJbYtv.css">
<link rel="modulepreload" href="/assets/app-BkWeNt32.js"><link rel="modulepreload" href="/assets/works.html-kia6uxqT.js">
<link rel="prefetch" href="/assets/index.html-CXTX8AI0.js" as="script"><link rel="prefetch" href="/assets/works.html-aZ7q92-5.js" as="script"><link rel="prefetch" href="/assets/index.html-Bt5-NjbQ.js" as="script"><link rel="prefetch" href="/assets/404.html-BBIICBHL.js" as="script">
</head>
<body>
<div id="app"><!--[--><div class="vp-theme-container no-sidebar external-link-icon" data-v-765855fb><!--[--><header class="vp-navbar"><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/eng/"><!----><span class="vp-site-name" aria-hidden="true">Dmitriy Pleshevskiy</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/eng/" aria-label="Resume"><!---->Resume<!----></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/eng/works.html" aria-label="Works"><!---->Works<!----></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/works.html" aria-label="Русский"><!---->Русский<!----></a></li><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/eng/works.html" aria-label="English"><!---->English<!----></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!---->Source<!----></a></div><!--]--></nav><!--[--><!--]--><button class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar"><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/eng/" aria-label="Resume"><!---->Resume<!----></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/eng/works.html" aria-label="Works"><!---->Works<!----></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/works.html" aria-label="Русский"><!---->Русский<!----></a></li><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/eng/works.html" aria-label="English"><!---->English<!----></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!---->Source<!----></a></div><!--]--></nav><!--[--><!--]--><!----><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-page"><!--[--><!--]--><div class="theme-default-content"><!--[--><!--]--><div><h2 id="highlighted-working-experience" tabindex="-1"><a class="header-anchor" href="#highlighted-working-experience"><span>Highlighted working experience</span></a></h2><h4 id="binary-management" tabindex="-1"><a class="header-anchor" href="#binary-management"><span>Binary Management</span></a></h4><ul><li>Dates: August 2018 currently</li><li>Roles: Lead Fullstack Developer, Team Lead, Architect</li></ul><p>Development of a project management tool for interior designers</p><ul><li>Development of the GraphQL API (Node.JS, Apollo, PostgreSQL, Redis, BullMQ). Moved database triggers to business logic. Wrote integration tests on 70% api.</li><li>Development of the frontend (React, Antd). Formed uikit, shared components, redesigned the page generation gathering. Completely changed work with API on the frontend. Introduced the practice of writing integration tests using cypress</li><li>Completely ported the project to TypeScript. I have formed isolated modules of the system.</li><li>As a team leader, I brought the critical chain method, the buffer method, and the planning method to the project from the end. Helped the team get into a rhythm to make releases each week in small batches. A couple of times I also prepared an individual development plan for team members.</li></ul><h4 id="master-progress" tabindex="-1"><a class="header-anchor" href="#master-progress"><span>Master Progress</span></a></h4><ul><li>Dates: May 2018 - currently (Passively maintained)</li><li>Role: Tech Lead</li></ul><p>Development web infrastructure of the educational center Master Progress</p><ul><li><a href="https://masterprogress.ru" target="_blank" rel="noopener noreferrer">The main site</a> (Python, Flask).</li><li><a href="https://cabinet.masterprogress.ru" target="_blank" rel="noopener noreferrer">Student&#39;s cabinet</a> (Python, Flask, TypeScript, React).</li><li><a href="https://rosmintrud.masterprogress.ru" target="_blank" rel="noopener noreferrer">A tool for rosmintrud</a> (Deno, Vue, Typescript)</li><li>Created a complete infrastructure on Woodpecker CI and Docker swarm.</li></ul><h4 id="core-spirit" tabindex="-1"><a class="header-anchor" href="#core-spirit"><span>Core Spirit</span></a></h4><ul><li>Dates: August 2018 - May 2020</li><li>Role: Lead Fullstack Developer</li></ul><p>Development of Social platform focusing on human and planetary enhancement.</p><ul><li>REST API (Node.JS, Express, PostgreSQL) for main site and backoffice.</li><li>Auto poster to various social networks and messengers (Facebook, LinkedIn, Twitter, Telegram).</li><li>Neural network for automatic categorization of articles.</li></ul><h4 id="merlion" tabindex="-1"><a class="header-anchor" href="#merlion"><span>MERLION</span></a></h4><ul><li>Dates: March 2016 May 2018</li><li>Role: Senior Fullstack developer</li></ul><p>In this company there were 6 considerable projects I have successfully completed:</p><ul><li>optimize the creation of promotional pages (PHP, JavaScript)</li><li>support main traditional site <a href="https://citilink.ru" target="_blank" rel="noopener noreferrer">https://citilink.ru</a> (PHP, JavaScript)</li><li>development of parsing to monitor products for changes in price, quantity/availability in stock, rating and other fields based on data from 55 websites (Node.JS, Express)</li><li>work with neural networks for matching of goods</li><li>development face recognition apps for Android (Java)</li></ul><h2 id="chronology" tabindex="-1"><a class="header-anchor" href="#chronology"><span>Chronology</span></a></h2><p>Public projects only.</p></div><!--[--><!--]--></div><footer class="vp-page-meta"><!----><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><div class="vp-meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: dmitriy@pleshevski.ru">Dmitriy Pleshevskiy</span><!----><!--]--><!--]--></span></div></div></footer><!----><!--[--><!--[--><div class="works-table-wrapper" data-v-765855fb><table data-v-765855fb><thead><tr><th>Name</th><th>Description</th><th>Role</th><th>Technologies</th><th>Status</th><th>Dates</th></tr></thead><tbody><!--[--><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/picsg">picsg</a></td><td>A tool for steganographing information in a picture encoded using the Vernam cipher.</td><td>author</td><td>Haskell</td><td>as-is</td><td><div><small class="">07/25/2024</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/mindustry-tools">Mindustry tools</a></td><td>Tools for the Mindustry game</td><td>author</td><td>Nix, Godot</td><td>passively-maintained</td><td><div><small class="">01/07/2024</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://rosmintrud.masterprogress.ru">Master Progress Rosmintrud tools</a></td><td>Internal service to prepare documents for the rosmintrud (SPA)</td><td>tech&nbsp;lead</td><td>Deno, Sqlite, TS, Vue, Docker, Woodpecker CI, Nix</td><td>passively-maintained</td><td><div><small class="">07/03/2023</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/tree-sitter-plpgsql">tree-sitter-plpgsql</a></td><td>plpgsql grammar for tree-sitter</td><td>author</td><td>C, JS, TreeSitter, Nix</td><td>passively-maintained</td><td><div><small class="">01/05/2023</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/tree-sitter-d2">tree-sitter-d2</a></td><td>d2 grammar for tree-sitter</td><td>author</td><td>C, JS, TreeSitter, Nix</td><td>actively-developed</td><td><div><small class="">12/04/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/mynix/nix2lua">nix2lua</a></td><td>This is a small but functional library that converts your nix configurations into lua format.</td><td>author</td><td>Nix, Lua</td><td>passively-maintained</td><td><div><small class="">11/22/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/vnetod">vnetod</a></td><td>Dotenv section switcher</td><td>author</td><td>Rust</td><td>passively-maintained</td><td><div><small class="">07/29/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/recipes">recipes</a></td><td>Site with recipes which cares about privacy</td><td>author</td><td>TS, Deno, Rust</td><td>passively-maintained</td><td><div><small class="">05/04/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru">pleshevski.ru</a></td><td>Source code of my personal site</td><td>author</td><td>TS, Vue, Vuepress, Nix</td><td>passively-maintained</td><td><div><small class="">03/16/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/espruino-starter">espruino-starter</a></td><td>Quickly start creating your new project on the espruino board or a board based on it.</td><td>author</td><td>JS</td><td>as-is</td><td><div><small class="">08/23/2021</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/sonic-channel">sonic-channel</a></td><td>Rust client for sonic search backend.</td><td>author</td><td>Rust</td><td>passively-maintained</td><td><div><small class="">07/18/2020</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/it-fsm">it-fsm</a></td><td>Simple full-featured finite state machine for your project</td><td>author</td><td>TS, NodeJS, Deno</td><td>passively-maintained</td><td><div><small class="">10/11/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://cabinet.masterprogress.ru">Cabinet Master Progress</a></td><td>Student&#39;s cabinet of the educational center Master Progress (SSR + SPA)</td><td>tech&nbsp;lead</td><td>Python, Flask, PostgreSQL, TS, React, Docker, Woodpecker CI, Nix</td><td>passively-maintained</td><td><div><small class="">09/22/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/genrss">genrss</a></td><td>RSS generator for python</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="">07/23/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://www.binarymanagement.com">Binary Management</a></td><td>Project management tool for interior designers</td><td>developer, tech&nbsp;lead, team&nbsp;lead</td><td>TS, NodeJS, React, Antd, Docker, Drone CI, Rust, Nix</td><td>actively-developed</td><td><div><small class="">09/15/2018</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://masterprogress.ru">Master Progress</a></td><td>Main website of the educational center Master Progress (SSR + Forms)</td><td>tech&nbsp;lead</td><td>Python, Flask, JS, Nix</td><td>passively-maintained</td><td><div><small class="">04/10/2018</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/yandexgpt_tg_bot">yandexgpt_tg_bot</a></td><td>The Telegram bot to describe article with link by YandexGPT.</td><td>author</td><td>JS, NodeJS, Nix</td><td>as-is</td><td><div><small class="grey">06/27/2023</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/estring">estring</a></td><td>A simple way to parse a string using type annotations.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">07/23/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/enve">enve</a></td><td>It helps you work with environment variables and convert it to any type using only type annotations</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">07/18/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/docker_stack">docker stack drone plugin</a></td><td>Deploy to production using `docker stack deploy`</td><td>author</td><td>Docker, Drone CI, Woodpecker CI</td><td>as-is</td><td><div><small class="grey">06/06/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/paren">paren</a></td><td>Library for parsing and rendering information.</td><td>author</td><td>TS, Deno</td><td>experimental</td><td><div><small class="grey">03/14/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/hwt">hwt</a></td><td>healthy workaholic timer A tool that keeps you from breaking your health by working all day.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">02/04/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/wd2">wd2</a></td><td>A wrapper over d2 which allows to use additional configs from d2 file</td><td>author</td><td>Bash, Nix</td><td>as-is</td><td><div><small class="grey">12/12/2022</small></div><div><small>07/31/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/react-rest-request">react-rest-request</a></td><td>Minimalistic REST API client for React inspired by Apollo.</td><td>author</td><td>TS, React</td><td>deprecated</td><td><div><small class="grey">10/04/2020</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/marshmallow_pageinfo">marshmallow_pageinfo</a></td><td>Page info marshmallow schema for api</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="grey">10/05/2019</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/ictmpl">ictmpl</a></td><td>Generate projects from templates</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="grey">06/30/2018</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/github/dexios">dexios</a></td><td>Dexios is a fast, secure, and open source command-line encryption tool.</td><td>collaborator</td><td>Rust</td><td></td><td><div><small class="grey">06/01/2022</small></div><div><small>02/28/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/itconfig">itconfig</a></td><td>Easy build a configs from environment variables and use it in globally.</td><td>author</td><td>Rust</td><td>deprecated</td><td><div><small class="grey">12/22/2019</small></div><div><small>07/24/2022</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/migra">migra</a></td><td>Simple SQL migration manager for your project.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">01/31/2021</small></div><div><small>03/17/2022</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/ood_persistence">ood_persistence</a></td><td>Asynchronous and synchronous interfaces and persistence implementations for your OOD architecture </td><td>author</td><td>Rust</td><td>deprecated</td><td><div><small class="grey">10/12/2021</small></div><div><small>10/21/2021</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://corespirit.com">Core Spirit</a></td><td>Social platform focusing on human and planetary enhancement</td><td>developer</td><td>TS, NodeJS, Go, Python, React, Docker, Drone CI</td><td></td><td><div><small class="grey">09/05/2018</small></div><div><small>12/31/2019</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/jjcrypto">jjcrypto</a></td><td>Javascript encoder and decoder</td><td>author</td><td>PHP</td><td>as-is</td><td><div><small class="grey">11/01/2015</small></div><div><small>11/01/2015</small></div></td></tr><!--]--></tbody></table></div><!--]--><!--]--></main><!--]--></div><!--[--><!----><!--]--><!--]--></div>
<script type="module" src="/assets/app-BkWeNt32.js" defer></script>
</body>
</html>