This day is a big day for me. With the help of my friends and contributors, I’m releasing in public the thing we’ve worked on for almost a year: reality.

It is an ambitious project, trying to make the world computable (and inspectable), while using only open source and open data. Like this:

ruby = Entity('Ruby (programming language)')
# => #<Reality::Entity(Ruby (programming language))> 
# -----------------------------------------------
# #<Reality::Entity(Ruby (programming language))>
# -----------------------------------------------
#     created_at: #<Date: 1995-01-01>
#     developers: #<Reality::List[Yukihiro Matsumoto?]>
#  influenced_by: #<Reality::List[Ada?, Dylan?]>
#       licenses: ["BSD license", "Ruby License", "GPLv2", "2-clause BSD license"]
#        version: "2.3.0"

Entity('Yukihiro Matsumoto').age_at(ruby.created_at)
# => 29 

There’s MUCH more already, just check our README. You’ll find all the answers about what Reality can and how it works.

In this post I’d want to tell another story. Story of Reality creation.

(Please imagine pretentions picture from Google Image Search “reality creation” here.)

And how Ruby Association’s Grant motivated me to finally release something.


It was March of 2015, IIRC. I’ve stumbled upon Stephen Wolfram’s “Frontiers of Computational Thinking”. That was a report, showing how easy to investigate and “compute” the world with Wolfram Language. It contained tons of pretty one-liners for extracting things like “mass of all planets” or “population by countries” or …. look yourself, it is pretty fascinating, in fact.

I liked the idea, but disliked the means. Faithfully, I was envious. “Ruby has greater readability and expressivenes”, I’ve thought, “and the same pretty one-liners could be waaay cooler in Ruby. If only we have all the data of the world accessible with that easy”.

That day, my crusade have started.

Note: there are many other small and large things which Ruby lacks (comparing to Wolfram Language) to do pretty visualisations and one-line studies and experiments and teaching. But I’m not a Lone Ranger: for example, SciRuby community currently does a large work to close the gap.

Story Begins

(I will not bother you with very long story.)

  • First guess for “any entity in the known world” is, of course, Wikipedia. But Wikipedia is for people, and we need machine-ready data.
  • So, the second guess was DBPedia, which tends to be “Wikipedia parsed into machine-readable data”… but fails. Much of data from Wikipedia is lost or ambiguous in DBPedia, and it becames better only slowly and unreliably;
  • So, the third attempt was like “OK, let’s return to Wikipedia, parse it and extract data!”. Which, eventually, was really hard. Rendered version of pages are also losing some data (and data regularity) presend in wikitext; and there’s literally no wikitext parser existing (only wikitext-to-HTML converters without full DOM building)!
  • That’s how infoboxer emerged. Which is MediaWiki client and full DOM parser. Fast and (almost always) reliable. At first at looked like “weekend project”, but took ~3 monthes till first working and fast version…
  • …and also created some funny by-products like dokaz (documentation testing tool) and mediawiktory (low-level MediaWiki client).

Everything was ready, but I was stuck somehow. To this time, a large amount of work have been done (sole Infoboxer is ~2,5k loc in lib folder only, and 544 tests). I was kinda scared with what I’ve started.

And then, the miracle occured.

Ruby Association Grant

I’ve sent my application to 2015 Ruby Association’s grant without large hopes. But, you know what happened? I was selected.

And it made me proud. And it made me work hard.

So, during the period of Nov’15-Mar’16 this things taken place:

  • updates to underlying mediawiktory/infoxer libraries (they are currently pretty useful on their own, for other projects);
  • three releases (0.0.1, 0.0.2 and 0.0.3 today) of Reality;
  • several code and approach rethink and redesign;
  • on some Kharkiv Ruby event, I’ve told something about Reality, and a great colleague was found to help and inspire me: Sergey Mostovoy did a great work and is a really helpful co-author;
  • both Wikipedia (through infoboxer) and Wikidata (which this year became really useful thing) was incoroporated, as well as some other services;
  • Reality became real (pun, obviously, intended).

Dry statistics:

  • 142 commits;
  • ~1.5k lines of code in lib;
  • 187 examples in specs;
  • comprehensive plan for future work.

Shortest conclusion possible: IT WORKS. And it is useful.

(And more to follow.)

Check it out, say what you think and be involved!

What Next?..

As far as I can see, Reality is already useful and usable. But there is a long way ahead us. And we promise we will not be your typical “grant acceptors”, which stops the work on grant final evaluation day. We are really grateful to Ruby Association, without their grant everything could be waaaay slower.

Long way ahead, indeed. Stay tuned.