Skip to content
View 4RH1T3CT0R7's full-sized avatar

Highlights

  • Pro

Block or report 4RH1T3CT0R7

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
4RH1T3CT0R7/README.md
  ARTEM LYTKIN
  ============
  $ whoami
  software engineering student, BMSTU, Moscow

Go Rust Python C C# Lua PostgreSQL Redis Docker

I am a software engineering student at Bauman Moscow State Technical University.

Most of what I do falls into two piles. One is ordinary systems work: a contest platform in Go that ran live tournaments for my university, and eleven patches merged into the Linux staging tree. The other is finding out what a system can be talked into doing when nobody designed it for that, which is how DOOM ended up running on regex substitutions and a raycaster ended up inside a font file.

I also translate games into Russian in my spare time, which turns out to be a surprisingly good way to learn how other people build software.

Projects

stars

DOOM running on nothing but regex find-and-replace. One 96 MB string, 544 rules, byte-identical to native DOOM. Turns out PCRE2 substitution is enough to be a computer, if you are patient.

stars

A 3D raycaster living inside a TrueType font's hinting virtual machine. I wrote a small compiler from a C-like DSL down to TrueType bytecode, and the glyph does the rendering. The whole engine is 6.5 KB.

stars

Balatro in your terminal, running the game's original Lua with no modifications. It is a reimplementation of the LOVE2D engine in Rust, with a software rasteriser and nine shaders emulated on the CPU.

stars

A tournament platform for game theory contests, used in production at Bauman Code Games. Go and React, matches executed in isolated Docker containers, ELO ratings, live standings over WebSocket.

Merged upstream

Project What I changed
Linux Eleven patches in drivers/staging, across most/dim2, sm750fb, nvec, fbtft and media/av7110. Error path fixes, device-based logging, replacing BUG() with proper error returns
GitHub CLI Added a --no-upstream flag to gh repo clone
Docker Made docker cp report both content size and transferred size
Grafana Fixed the active tab indicator on custom datasource config pages
Superset Kept percentage formatting intact for small numbers in tables
Docusaurus Used the category key for generated-index translation lookup
Telegram Restored the expandable quote button in the caption field
Windows Terminal Focused the terminal on click-drag while search is open
Raspberry Pi Six fixes, mostly around polkit on immutable distros, stale WiFi settings, file dialogs and a fallback chime for Linux
Bambu Lab Fixed window drag lag on Windows
Flipper Wrote the build and firmware update documentation
bitchat Fixed a crash when opening a private message a second time
Throne Prevented a core crash on Remove Invalid, and made the system proxy clear itself on exit
Millennium Dawn 66 merged pull requests in this Hearts of Iron IV mod: the intelligence agency system, several economy exploits, AI behaviour and a number of national focus trees

Across all of this I have opened pull requests against 32 projects that are not mine. Another 24 of them are still open, in seventeen projects including Kubernetes, VS Code, Moby, Prometheus, Ollama, Next.js, TensorFlow, Supabase, hashcat, OBS Studio, Notepad++ and both Arduino IDEs.

Russian game localizations

Four games that never got an official Russian release, or got a bad one.

  • Suzerain is the big one. Published in December 2022 and still updated today, with 11k readers and 693 people keeping it in their favourites. Done with a team of translators over about three years.
  • Night Call covers 5,371 dialogue passages, 789 interface keys and every passenger name, through a BepInEx plugin with generated Cyrillic SDF atlases.
  • Interrogation covers all 60 localization files and 30 or so interrogations, plus 23 Cyrillic fonts including the system one.
  • Not Tonight covers the base game and the One Love DLC, roughly 8,000 keys.

Stack

languages    Go, Python, Rust, C, C#, Lua
backend      PostgreSQL, Redis, Chi, REST, WebSocket, gRPC
infra        Docker, Prometheus, Grafana, Loki, Linux
ml           TensorFlow, PyTorch
low level    TrueType hinting VM, Lua VM, Sixel, terminal rendering

Background

Studying software engineering at BMSTU, department IU7, second year. Before that, an engineering class with a gold medal, and a 70 percent scholarship to Central University.

Winner of the BMSTU "Step into the Future" olympiad in computer science, winner of the "Engineers of the Future" conference with a neural network project, and a prize winner at the Moscow School Olympiad and the regional stage of the All-Russian Olympiad.

I write about my projects too. There is an article on Habr about how ttf-doom works, and a piece in Xakep on running code inside the TrueType virtual machine.

Outside code

Video games as an art form, which is most of why I translate them. 3D printing. Engineering that has no practical reason to exist. Music, more or less constantly.

Contact

Telegram Email


  АРТЁМ ЛЫТКИН
  ============
  $ whoami
  студент программной инженерии, МГТУ им. Баумана, Москва

Я учусь на программной инженерии в МГТУ имени Баумана.

То, чем я занимаюсь, делится примерно на две части. Первая это обычная системная работа: контест-платформа на Go, которая отработала живые турниры в университете, и одиннадцать патчей, принятых в staging-ветку ядра Linux. Вторая это выяснение, что можно уговорить систему сделать, если её для этого никто не проектировал. Именно так DOOM оказался запущен на одних лишь заменах по регулярному выражению, а рейкастер поселился внутри файла шрифта.

Ещё я перевожу игры на русский, и это неожиданно хороший способ разобраться, как другие люди пишут софт.

Проекты

stars

DOOM, работающий на одних заменах по регулярным выражениям. Одна строка на 96 МБ, 544 правила, результат побайтово совпадает с оригинальным DOOM. Оказалось, замены PCRE2 достаточно, чтобы быть компьютером, если не торопиться.

stars

Трёхмерный рейкастер внутри виртуальной машины хинтинга шрифта TrueType. Я написал небольшой компилятор из C-подобного языка в байт-код TrueType, и рендерингом занимается сам глиф. Весь движок весит 6.5 КБ.

stars

Balatro в терминале, запускающая оригинальный Lua-код игры без единой правки. Это переписанный на Rust движок LOVE2D с программным растеризатором и девятью шейдерами, которые считаются на процессоре.

stars

Турнирная платформа для соревнований по теории игр, работала в проде на Bauman Code Games. Go и React, матчи исполняются в изолированных контейнерах, рейтинг по ELO, таблица обновляется в реальном времени через WebSocket.

Принятые правки в чужие проекты

Проект Что сделал
Linux Одиннадцать патчей в drivers/staging: most/dim2, sm750fb, nvec, fbtft и media/av7110. Обработка ошибок, логирование через устройство, замена BUG() на нормальный возврат ошибки
GitHub CLI Добавил флаг --no-upstream в gh repo clone
Docker Научил docker cp показывать и размер содержимого, и размер переданного
Grafana Починил индикатор активной вкладки на страницах настройки источников данных
Superset Сохранил процентный формат для малых чисел в таблицах
Docusaurus Поправил поиск перевода для сгенерированного оглавления категории
Telegram Вернул кнопку разворачивания цитаты в поле подписи
Windows Terminal Сделал так, чтобы терминал получал фокус при выделении мышью с открытым поиском
Raspberry Pi Шесть правок: polkit на неизменяемых дистрибутивах, залипавшие настройки WiFi, файловые диалоги и запасной звук для систем без freedesktop-звуков
Bambu Lab Убрал лаг перетаскивания окна в Windows
Flipper Написал документацию по сборке и прошивке
bitchat Починил падение при повторном открытии личной переписки
Throne Не дал ядру падать на Remove Invalid и заставил системный прокси сбрасываться при выходе
Millennium Dawn 66 принятых пул-реквестов в мод для Hearts of Iron IV: система разведки, несколько экономических эксплойтов, поведение ИИ и целый ряд древ национальных фокусов

Всего я открывал пул-реквесты в 32 чужих проекта. Ещё 24 из них сейчас открыты, в семнадцати проектах, среди которых Kubernetes, VS Code, Moby, Prometheus, Ollama, Next.js, TensorFlow, Supabase, hashcat, OBS Studio, Notepad++ и обе среды Arduino.

Русские локализации игр

Четыре игры, у которых официального русского не было вовсе или он был плохим.

  • Suzerain это самый большой проект. Опубликован в декабре 2022 и обновляется до сих пор, 11 тысяч читателей и 693 человека держат его в избранном. Делали командой переводчиков примерно три года.
  • Night Call это 5371 диалоговый пассаж, 789 ключей интерфейса и все имена пассажиров, через плагин BepInEx со сгенерированными кириллическими SDF-атласами.
  • Interrogation это все 60 файлов локализации, три десятка допросов и 23 кириллических шрифта, включая системный.
  • Not Tonight это базовая игра плюс дополнение One Love, около восьми тысяч ключей.

Стек

языки          Go, Python, Rust, C, C#, Lua
бэкенд         PostgreSQL, Redis, Chi, REST, WebSocket, gRPC
инфраструктура Docker, Prometheus, Grafana, Loki, Linux
ml             TensorFlow, PyTorch
низкий уровень TrueType hinting VM, Lua VM, Sixel, отрисовка в терминале

Образование и награды

Программная инженерия в МГТУ имени Баумана, кафедра ИУ7, второй курс. До этого инженерный класс с золотой медалью и грант на обучение в Центральном университете на 70 процентов.

Победитель олимпиады МГТУ «Шаг в будущее» по информатике, победитель конференции «Инженеры будущего» с проектом по нейронным сетям, призёр Московской олимпиады школьников и регионального этапа Всероссийской олимпиады.

Про свои проекты я иногда пишу. Есть статья на Хабре о том, как устроен ttf-doom, и материал в «Хакере» про запуск кода внутри виртуальной машины TrueType.

Вне кода

Видеоигры как форма искусства, во многом поэтому я их и перевожу. Трёхмерная печать. Инженерия, у которой нет практических причин существовать. Музыка, более или менее постоянно.

Связь

Telegram Email


Pinned Loading

  1. doom-regex doom-regex Public

    DOOM running on nothing but regex find-and-replace. One 96 MB string, 544 rules, byte-identical to native DOOM

    Python 124 4

  2. balatro-port-tui balatro-port-tui Public

    Balatro in your terminal!

    Rust 60

  3. ttf-doom ttf-doom Public

    A 3D raycasting engine running inside a TrueType font's hinting virtual machine

    Python 65 1

  4. russian-localisation-night-call russian-localisation-night-call Public

    Русская локализация (русификатор) для игры Night Call

    C# 2

  5. TJudge TJudge Public

    Контест система по теории игр для Bauman Code Games

    Go

  6. MillenniumDawn/Millennium-Dawn MillenniumDawn/Millennium-Dawn Public

    Millennium Dawn and it's codebase.

    Python 104 69