I am an open source developer with background in software engineering and passion in user interfaces and crafting great experiences, for developers as well as non-tech users.
Currently, I contribute to open source software among three categories: working with abstract syntax trees (ASTs) enriching the markup data and automatic writing routines, styling web pages in a plain human language, sharing my personal workflows and configs for inspiration. As a member of Kottans, I give lectures focussing on semantics of HTML markup and the best practices of styling web pages, mentor students guiding them along web developerʼs path.
Previously, I was a Head of Web and an author of problems at Internet Olympiad in Information Technologies, leading front-end engineer and a product designer at CORE.
My engineering interests in open source are shaped among three categories, described below.
Traversing and transformation of abstract syntax trees for linting and enrichment of simlplified markup like Markdown to heavy and accessible HTML.
The use-case can be simply found here on GitHub:
in a repository you write a README.md
in a simple Markdown
markup (GitHub Flavoured Markdown to be precise)
and GitHub converting it to rich HTML in its web interface,
transforming specific blockquote syntax
to highlighted notes or warnings.
This is achieved by parsing Markdown text into a tree, transforming it into another AST, e.g. HTML and transforming it more along the way applying context-related data and enrichments, then serialising the tree back to text. In my work, I utilize unifiedʼs ecosytem, including remark and rehype to do this magic. Unified.js uses plugins to apply such kind of AST transformations. Below, I list a few ones that I wrote for my needs and might be useful for you:
- hast-util-merge — a utility for merging documents or fragments in form of hypertext abstract syntax trees (HASTs)
- rehype-lodash-template —
plugin to replace string values in HTML
utilizing
lodash.template
function - rehype-postcss —
plugin to process
<style>
elements with PostCSS - rehype-css-modules — plugin for substituting class names with their scoped equivalents (essentially applying CSS modules)
Going against common trend in scoped styling and heavy usage of utility-based CSS, I develop libraries that focus on: embracing semantic and accessible markup; using plain language for definitions; and applying modern best practices and future technologies. The goal is to build a solid styling foundation for the Web. My current work listed below:
- css — a styling library applying modern best practices in colours, typography and layout, embracing semantic and accessible markup, putting it over class-based styling
- every-color — an experimental CSS-library enabling users apply colours to text and blocks using plain human language
Sometimes, I write code to be able to write more code more efficiently. This is what I did for it so far.
- dotfiles — how I configure my workspace
- nvim — I use Vim (btw); here is how I configure it.
- brightness.js — once I needed to synchronise brightness of my external display with amount of sunlight along the day
- macos.itermcolors — I like smooth integration of terminal with the colour scheme of the operating system but there was no such an option