A list of public/open-source things I am working on, with a weak attempt of most important-first ordering.

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;
    • delegatesdelegate :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-junkYARD 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:
    • linkhum – “links-in-text humanizer”, linkify text-only input;
    • did_you – easy-to-use wrapper for did_you_mean bundled Ruby gem (which dramatically changed behavior between versions)

Fun and experiments