FutuReView: the story of one R&D project

image

In this article I want to briefly share my experience of project development and to attract more audience to get feedbacks.

More than a year ago together with RIA Novosti and the company of RVC and the Media Lab RIA Novosti the project was born FutuReView experimental navigation tool described in the future. In essence this project is a visualization of a document library (foresight), describing different aspects of the life of our civilization in the future, about a century ahead. Various technologies of representation that will be arranged in the city, industry, livelihoods, health, communications and so on — all this from different companies and research institutes.

Data

A special editorial team of RIA Novosti has selected about 2 hundred foresights and made them in a special editorial system to the database, multiple accompanying metadata, including coverage of industries, technology platforms, time relevance in a particular sector, locality coverage descriptions, etc. In addition to editorial work, we "gutted" the text representation of the original documents (mostly pdf and doc article) through third-party services (such as Alchemy and the like) on the subject of keywords and articulated for each foresight set of entities of type keywords, geolocation, keyphrases, that is some semantic "distillation" of the original text.

Back-end in our project is built on a bunch of NodeJS + MongoDB through our constantly evolving development framework Dataflo.ws. As additional full-text module we used Sphinx. General load on the server falls on the statistical processing of the filtered collection.

the Concept of

To a first approximation, that is, a year ago, we focused on the visual attractiveness of the project. The task was to submit a number of documents (almost I quote) "custom non-scheduled way." Question visualization revolved around several ideas:
    the
  1. graph: select the metadata on which groupbecause all the foresights between these groups are communication in the form of links to the same document and this graph is built with a force field "repelling knots, rubber connection";
  2. the
  3. timeline: the timestamps of each of foresight, but all the documents start at about the same time, 2000 years;
  4. the
  5. a"multiverse": cloud of categories of "falls" into the content.


In the end we settled on "graph connections", especially since there have already been examples of works using d3js. In the first version, in addition to the example we used recycled fisheye distorsioni modifier graph (which works essentially as a vertex Shader, only instead of z-coordinates, we used a scale factor), he also is in the examples on d3js. It all looked very attractive for a few minutes, you can hang to play an animated molecule, which is alive and physicality is converted from one form to another.

Utility

After almost years of independent life of the project, we decided to go back to it and analyzed the shortcomings of the first version. The problem in the first version was that she little which allowed it to attract attention, so we decided to make the project more utilitarian and focused on user — researcher and/or entrepreneur who could use our project for a more effective orientation or search information in the field of vision of the future. We decided to focus on the list of foresights, additional visual slices, views, and creating / storing user preferences and filtered collections. On top of that we added the functionality of creating a pdf of the poster that translates the vision of the user interests on a circuit basis.
Experience and pitfalls

    the
  1. d3js is a powerful svg-based data reporting platform, today no such project, in my opinion, can not boast such a diversity of ideas and power capacities.
  2. the
  3. tag as an html frame we ispolzovali bootstrap 3, pleased customization and management components in JS.
  4. the
  5. Very sorry in the early stages does not managed to master the human backbone for mvc from in our large project backlog to refactor the hand-rolled controllers and optimization with iterative code snippets — all hands on deck he is!
  6. the
  7. Canvas & SVG. The rasterize svg here we ate dust. We came across one terrible peculiarity of working with canvas and svg, namely the inability to convert the image canvas are drawn to him, svg (xml-valid) via drawImage "image/jpeg|png" data. As it turned out valid for rendering svg should contain xmlns attributes in head tag which values links to w3c resources. When you try to call canvas.toDataURL() is emitted, acceptn associated with security, saying "you are trying to export an image from another domain". Came to the aid of the project canvg he made traversing the body of the svg and gently calls methods on the canvas for rendering of those or other nodes.
  8. the
  9. Very convenient that today QR codes can be generated directly in the browser by libraries qrcode.js


The whole project for me personally is of great value in gaining experience valuable to users — time will tell. About the server part (the mapReduce implementation experience in conjunction of NodeJS + MongoDB) and editorial system separate conversation, if the topic is interesting, I will write about it.
Article based on information from habrahabr.ru

Комментарии

Популярные сообщения из этого блога

Monitoring PostgreSQL + php-fpm + nginx + disk using Zabbix

Templates ESKD and GOST 7.32 for Lyx 1.6.x

Customize your Google