Projects
Ruby
I am an active contributor to Ruby programming language. My main interests are making the language more naturally expressive, and more friendly for the newcomers.
- List of my contributions to the language itself: documentation, and some features mostly on idea level, like
Kernel#then
, beginless ranges,Enumerator#produce
etc. - Ruby Changes is full changelog of recent Ruby (2.4—3.1 at the moment), with full context and example for each and every change.
- Ruby Reference is an attempt to generate full Ruby reference from official docs and other stuff in a readable e-book-alike format; this year, there is a work planned to make it an official version at
ruby-lang.org
.
Common world knowledge API
Since 2016, I am experimenting with possibilities to make common open knowledge easily accessible from scripting languages.
Current ongoing effort is focusing on a Python library WikipediaQL.
Before that, I developed a set of Ruby libraries, also mostly based on Wikipedia/Wikidata (with some sprinkles of OpenStreetMap and other services). The whole effort was named molybdenum-99 (as a pun on Wolfram language which was the big inspiration), and peeked in reality—the most hi-level gem of the project, representing all world’s data as Ruby entities. Beneath it, multiple libraries were developed:
- infoboxer: Wikipedia client and parser, targeting data extraction;
- mediawiktory: low-level MediaWiki API client that just works;
- tlaw: pragmatic API wrapper framework;
- wheretz: fast and precise offline time zone by geo coordinates lookup;
- geo_coord:
Geo::Coord
class, abstracting[latitude, longitude]
pair; - tz_offset: simple abstraction of time zone offset;
- whatis:
WhatIs.this()
: simple entity resolution through Wikipedia; - mormor: Morfologik dictionaries client in pure Ruby: POS tagging & spellcheck
Rebuilding the spellchecker
In 2021, I built Spylls: pure Python spell-checker, “explanatory” full port of the most popular open source spellchecker Hunspell.
I documented the journey to do this and my discoveries in a series of posts.
Ruby libraries
- Experimenting on Ruby edges:
- time_calc – Simple time arithmetic in a modern, readable, idiomatic, no-“magic” Ruby (previous approach to the problem: time_math2);
- sho – “post-framework” views library.
- hm – idiomatic nested hash transformations;
- delegates –
delegate :methods, to: :target
, extracted from ActiveSupport; - fstrings – Python-alike formatting strings;
- Development tools:
- the_schema_is – Rails DSL for model annotation with DB schema, done right
- whatthegem – information about any Ruby gem in your terminal: general information, usage examples, popularity stats, changes and more (successor of any_good – quick command-line evaluation of Ruby gem freshness/popularity)
- yard-junk – YARD plugin for checking for errors in docs;
- saharspec – a set of RSpec addons for DRY-er specs;
- dokaz – test code from inside of your Markdown documentation files;
- Other stuff:
Fun and experiments
- Grok {Shan, Shui}*: Advent of understanding the generative art
- Game of Life in one Ruby statement… inspired by APL
- worldize – simple colored countries stats drawing with RMagick;
- magic_cloud – pretty wordcloud in pure Ruby, done a long time ago;
- xkcdize and drosterize – experiments on converting some “cool” image-processing tricks from Wolfram Language (Mathematica) to Ruby + RMagick;