Historian & Arabist (Sorbonne PhD) — Arab–Byzantine relations, environmental history, and the digital humanities. Consultant on AI in research. In between, I build small tools for reading, writing, and language.
sypian.ski · ORCID · Bluesky · X
- kalkal.online — a multilingual converter for ancient and medieval Middle Eastern calendars: Hijri, Byzantine, Coptic, Julian, and more.
- kazimirski.online — a digital edition of Kazimirski's Arabic–French dictionary (1860), with transliteration-aware search across 40,000 entries.
- Carte-Mediterranee-orientale-600-900 — a shapefile map of the eastern Mediterranean, 600–900 CE, focused on the shifting frontiers between the Roman and Sasanian, then Muslim, empires, together with cities and centres of learning.
- ortografio — a set of public spell-check dictionaries covering medieval studies and Arabic transliteration.
KOReader is an open-source document and ebook reader for e-ink devices (Kindle, Kobo, PocketBook, Android). These plugins extend it for scholarly and multilingual reading.
- keyreader — makes an external physical keyboard a first-class input device in KOReader: remap any key, a fuzzy command palette for actions, in-book word search, and vim-style visual sentence/word selection, so you can drive the reader like a text editor.
- kopad — gamepad and controller support for KOReader: a crosshair cursor that snaps to the nearest word for highlighting, dictionary and AI lookup, plus structured navigation by sentence and word — page-turning and menus without touching the screen.
- rosetta.koplugin — a bilingual reading panel beneath the book text: the original page stays in place while a panel shows the same page in your target language, typographically matched to the book (font, margins, hyphenation, italics, headings). Translations are generated by an LLM or drawn from a pre-aligned human translation.
- paraligilo — aligns an ebook with its translation at sentence level and emits a
parallel-aligned.jsonsidecar — the raw material that feeds bilingual reading panels like rosetta, and parallel corpora. - parallel-align-spec — an open specification for pairing paragraphs between an EPUB and its translation, using a content-hash sidecar format so alignments survive re-exports of the book.
- marjenoti.koplugin — renders your annotation notes in the right-hand page margin, pinned next to the text they comment on, the way glosses sit beside the text in a critical edition.
- textolimiti.koplugin — fixes KOReader's reading-% by letting you mark where the actual book text begins and ends, so front matter, endnotes, and appendices don't distort your sense of progress.
- koreader-frontespico — a small user patch that replaces the file-path popup shown when you open a book with a clean, centred author + title splash screen.
- hairline.koplugin — a minimal progress bar flush to the bottom edge of the screen, inspired by the Crosspoint firmware look on the XTEINK X4.
- kotheme.koplugin — cosmetic theming for KOReader: rounded corners and smoother borders on notifications, popups, buttons, and highlight rectangles.
- notes & codes — a Connect IQ notes/QR/barcode wallet that syncs cards over BLE from Android, macOS, and web companions backed by a zero-dependency Node API.
- garmanki — an unofficial Anki client for Garmin watches: a Connect IQ app plus an Android companion that bridges to AnkiDroid over BLE, so the scheduler stays in AnkiDroid and the watch just shows cards and reports ease.
The Android companion for both apps is in closed beta — to join the testers, see sypian.ski/beta.
- swap.nvim — a Neovim plugin that swaps a word, sentence, or paragraph with its previous neighbour, with a live preview of the result, a confirmation step, and a flash showing exactly what moved.
- flustrilo — push-to-talk dictation for Wayland: a dependency-light (stdlib) Python client that records while you hold a key and transcribes through any OpenAI-compatible Whisper backend, self-hosted or hosted.
- nchat — a fork of nchat, the terminal client for Telegram, WhatsApp, and Signal, adding optional vim-style modal editing to the message compose entry.


