Nikita Konkin
Projects
Current projects, public links, and the latest updates.
Diploma Supplement Automation Service
A service for validating Excel grade sheets, highlighting problematic data, and assembling XML files for diploma supplements.
- Automated validation and highlighting of problematic cells in Excel.
- XML generation in the target “CyberDiploma 3.5.1” format.
- Polyglot architecture with separate API, data-processing, and XML-generation layers.
Otkrytyi Diplom — an open replacement for CyberDiploma
An open system for preparing and printing diplomas and their supplements, including at universities with old Windows 7 machines and Russian Linux distributions. A single Java 11 build runs both on an offline computer and on a university server.
- Import of faculty grade statements through a staging area: semesters are summed, credits come from the curriculum, doubtful rows are flagged for the operator.
- Curricula saved as PDF are read by the table's grid; the plan's title and totals fill the XML fields.
- Printing in millimetres with printer calibration; the current service's rules are ported and checked against it byte for byte on the archive.
- Curricula by admission year and edition: checksums, comparison with the nearest plan and «Create from» for plans that exist only as scans.
- A graduation from grade statement to blank: matching to the curriculum, registration numbers, corrections laid over the files, printing from the typographer's FastReport templates and strict-control blank accounting with a registration book.
Angry Tests — testing principles by Yegor Bugayenko
A practical collection of automated testing principles: short tests, bug-focused coverage, strict assertions, and stronger engineering feedback loops.
- Principles for fast and deep tests, flaky bug reproduction, and custom matchers.
- Practical guidance on making tests shorter, stricter, and more useful.
- References to tools and approaches such as jqwik, pitest, ArchUnit, and fuzzing.
ICT — an ionospheric sounding data-processing platform
An end-to-end GNSS data-processing pipeline: from RINEX archives to total electron content, coherence bands, maps, and analytics. A set of containerised services with a web orchestrator and an API for data access.
- An end-to-end data path: RINEX → TEC → coherence band → maps and statistics.
- A web orchestrator for containerised converters with streaming logs and a run audit.
- A DuckDB analytics backend over Parquet with JSON/CSV/XLSX export and plotting.
- Jobs survive a hub restart; AbsTEC runs in Windows XP inside a KVM container; CI images deploy through Watchtower.
- Ionospheric map animations render in the background in parallel processes — a week in a minute instead of almost five; a map of RINEX stations on OpenStreetMap.
Tea Taste — a digital tea-tasting journal
A web app for structured tea tasting: it records brewing parameters and sensory impressions across infusions, turning a subjective evaluation into a reproducible record.
- A multi-step tasting form with a localStorage draft.
- An infusion model: aroma and taste are recorded in stages, each infusion has its own rating and timer.
- An Express and MongoDB REST API with JWT authentication and a public tasting feed.
Volgatech.Kollektiv — a mobile staff cabinet for Volgatech
A client for the Volgatech (Volga State University of Technology) staff cabinet on Android, iOS and the web: class and exam schedules, a profile with teaching load, the foreign-groups memo and the hourly-load report as .docx files, and a built-in mail client. It works on top of the university's existing API without changing it.
- A schedule with an offline cache: the saved copy shows at once and refreshes in the background, the next week is prefetched, and a week overview shows gaps and the number of classes.
- The memo on foreign-student groups and the Form 28 appendix on hourly load are assembled from the schedule and shared as .docx files; class topics follow a plan that carries on from one report to the next.
- JWT sign-in with automatic refresh: tokens live in the OS keystore and the cabinet password is never stored; an optional fingerprint or PIN app lock.
- A built-in mail client for the university's Exchange (EWS, NTLMv2) in a separate, opt-in build; the mail password lives in the OS keystore and is removed on sign-out.
- A browser version for iPhone and computers, in-app updates checked by SHA-256, lesson reminders, a widget and a Liquid Glass theme with contrast checked by tests.
conf-kit — a conference programme, jury and applications
A service for conferences and events: a chat bot builds the programme through an API, and a person accepts the finished draft. A builder for phone and desktop, a public programme with “now” and “next”, A4 and Word documents, a talk competition whose jury scores survive a lost connection, and talk applications with consent to personal-data processing.
- The programme as a conf.program/v1 document with a schema: normalisation, times from the rules and checks with an exact path to each error.
- An API, llms.txt, openapi.json and an MCP server for chat bots; a draft becomes a programme only after a person accepts the invitation.
- A jury without accounts, by commission code; browsers from 2018 onwards and at most 80 KB of JavaScript for participants.
ML Playgrounds — interactive labs for a machine learning course
Thirteen Streamlit apps that run right in the browser: a gradient-descent trainer, six playgrounds for the Machine Learning Fundamentals course of a linguistics master's programme and six for the bachelor's course Foundations of Programming AI Systems in Python. A catalog sorts them by topic, and each reproduces its lab's numbers.
- Each lab's numbers are reproduced and checked by tests on every CI run — down to the rounding rule.
- Everything is computed in the browser: stlite runs Python through WebAssembly, and the site is served from static hosting with no server.
- The gradient-descent trainer: three descent variants, a step-by-step animation and a 3D loss surface with the optimisation trajectory.
- Explanations come in steps before the charts, and 71 terms are gathered into a shared glossary: on the playgrounds a definition pops up on hovering over an underlined word.
Similar projects
- TensorFlow Playground — Train a neural network right in the browser — the canonical interactive ML sandbox.
- Distill — Why Momentum Really Works — An interactive account of the dynamics of gradient descent with momentum.
- Setosa — Ordinary Least Squares — A visual explanation of least-squares fitting.
- 3Blue1Brown — Neural networks — A video series that explains gradient descent and learning visually.
ionozond — an oblique chirp-sounding console for the ionosphere
A suite for oblique chirp sounding of the ionosphere: acquisition, an operator console in Qt5 and Qwt recovered from the binary of a program whose source was lost, capture and product formats, and a document on the physics of chirp ionograms. The console runs in a browser through Docker and noVNC.
- Recovered from an unstripped binary and checked against the original: calls to its functions under gdb, a byte-identical configuration, spectra agreeing to 1.7·10⁻¹³.
- An .lfp products file 2000 times smaller than the 80 MB capture: the heavy processing happens once.
- The ionogram is drawn during reception, the FFT length is set per station, and the schedule is checked for lost soundings.
- An echo window keeps each sounding's phase in 1.57 MB, bit-identical to the reference; a capture is deleted only after its window is verified.
The ionozond playground — interactive models of chirp sounding
A static site in Russian and English: seven models for a document on oblique chirp ionograms — group-delay dispersion and the widest usable band, ways to measure it, start-time errors, FFT length, the station schedule, the daily course and vertical sounding — the document's full text as a wiki and a glossary, and an HF channel simulator on real soundings with notes and six boards.
- A dispersion law from this path: the median of 19,033 estimates over 583 soundings, b = 7.52 with R² = 0.975.
- No libraries and no build: the charts are drawn by hand in SVG, and the site opens from disk.
- Each model is checked independently in Python; work on the models found contradictions in the document itself, and they were fixed at the source.
- The channel simulator checks itself: the real sounding is put among twelve copies synthesised from its state, and the verdict is given in sigmas.
HF-FEC GAN — adversarial robustness testing of error-correcting codes
Adversarial (GAN) generation of structured, fixed-power interference to probe the vulnerability of the FEC codes used in HF radio. It compares the BER of several FEC schemes (convolutional K=7 R=1/2, BCH(63,51), turbo) in an ideal channel, under Rayleigh and Rician fading, and against a trained noise generator.
- FEC to HF communication standards: a convolutional code with soft-decision Viterbi (MIL-STD-188-110, STANAG 4285), BCH(63,51) for ALE, a STANAG 4539 turbo-code stub, and 16×16 block interleaving.
- A noise generator (FC → Conv1D → LSTM → Conv1D) against a CNN discriminator that predicts a decoding failure — fixed-power interference learns to defeat the FEC specifically.
- AWGN, Rayleigh, and Rician channel models, plus spectral analysis (FFT, Welch PSD) of the most effective interference structures.
Similar projects
- O'Shea & Hoydis — Deep Learning for the Physical Layer — The foundational paper on learning the physical layer end-to-end as an autoencoder.
- Nachmani et al. — Learning to Decode Linear Codes — Neural-network improvement of linear-code decoding — ML on the decoder side.
- Sadeghi & Larsson — Adversarial Attacks on Radio Signal Classification — Adversarial perturbations in wireless — the same attack angle against the receiver.
- NVIDIA Sionna — A differentiable physical-layer link-level simulation library for research.
No projects use this technology yet.