Dmitry Shpika // scriptin
type Links = GitHub | LinkedIn | YouTube | StackExchange | NPM;
My profile photo
Hello there!

My name is Dmitry. I'm a software engineer.

Creating software is both my profession and hobby, with a focus on web applications, libraries, and CLI tools in TypeScript, JavaScript, Python, Bash, and Kotlin, among others. Clean code, architecture, and testing are important to me, and I strive to make these aspects practical.

During 12+ years of my professional experience, I have worked on projects of various sizes, in companies ranging from small local startups to unicorns.

Download CV LinkedIn GitHub

I have a university degree in IT security. Even though I've never worked as a security engineer, I always look out for SQL/code injections, XSS, CSRF, and other potential vulnerabilities when I write and review code. Check out my small research project about timing attacks in Node.js.

My other passion is (natural) languages. You can find me on Tatoeba.org, where I study foreign languages and contribute sentences. And here are a few of my videos on YouTube about language acquisition:

My FOSS projects

jmdict-simplified

JSON version of JMdict, JMnedict, Kanjidic, and Kradfile/Radkfile, created out of frustration after struggling with the original XML files. Includes Node.js libraries.

  • Kotlin
  • TypeScript
  • Node.js
  • XML
  • JSON
  • Parser
  • Linguistics

Kanji Frequency

This dataset of frequencies of Japanese kanji characters includes data from multiple corpora, covering most styles (e.g. academic writing, fiction books) of Japanese language. Maintained since 2015.

  • JavaScript
  • Astro
  • Web Scraping
  • Data
  • Statistics
  • Linguistics

is-han

Tiny Node.js library for properly detecting Han characters (Kanji, Hanzi, Hanja). Because, apparently, it’s not as simple as just using a regex with two code points.

  • TypeScript
  • Node.js
  • Linguistics

German language acquisition

I tracked the time I spend acquiring German using comprehensible input method (see input hypothesis) and analyzed the data, including my vocabulary and grammar test results on each checkpoint (every 100 hours).

  • Data
  • Linguistics

TopoKanji

An attempt to create a meaningful ordering of Japanese kanji characters for foreign learners based on character decomposition and frequency in texts.

  • JavaScript
  • Data
  • Linguistics

Node.js timing attack

Are timing attack on regular string comparison in Node.js web applications practical? This research project answers this question with a strong “No.”

  • Node.js
  • JavaScript
  • Security

Geoguessovich

Vanilla JS game, a parody of GeoGuessr. Created as a proof that not all projects need anything more than just plain JavaScript, HTML, and CSS.

  • JavaScript
  • Game

Validation tool for KanjiVG

CLI tool for validating SVG files of KanjiVG project.

  • Kotlin
  • SVG
  • Parser

Blog