In 2012 I found Lumosity and used trial version, it took me almost a year to come back and continue training. And now I have 164 consecutive days streak. How Lumosity works: every day it will give you 5 games from 2-3 groups, all finished games will be included into LPI. There is no limitation of games per day, but you are required to play at least 5.

All games are separated to 5 groups plus LPI (Lumosity Performance Index) group which shows average of all groups:


Looking only at LPI which is average from all groups:



Getting data

All of six groups are returned as arrays, where x – number that represents date, y – performance index.

    "name": "BPI", "id": "overall", "data":
         { "x": 1339830000000, "y": 1106 },
         { "x": 1384675200000, "y": 1029 }, 

Last two entries, for yesterday and today:

{ "x": 1424419200000, "y": 1700 }, { "x": 1424505600000, "y": 1705 }
Difference between them is
1424505600000 – 1424419200000 = 86400000

It should be time, so lets try to convert:

86400000 / 60 / 60 = 24000 = 1  day in milliseconds

Now that we know that x is time in milliseconds , we need to find start date. Convert milliseconds to days and subtract that from today:

new DateTime(2015, 02, 21).AddDays(-TimeSpan.FromMilliseconds(1424505600000).Days)
We get the Unix epoch 1970-01-01.

Converting data

Before drawing charts, we need to convert json data to csv file. Since all data is in json and date is milliseconds from Unix epoch which is default offset for JavaScript date we can use WScript.

WScript  can be used to run .wsf, .vbs and .js scripts from command line, so I created small script to convert dates and write each group to separate .csv file.

var currentDate = "2/21/2015";
var streak = 164;
var fs = WScript.CreateObject("Scripting.FileSystemObject");
for (var i = 0; i < allData.length; i++) {
    var a = fs.CreateTextFile(allData[i].name + ".csv", true);
    for (var k = 0; k < allData[i].data.length; k++) {
        if (getDateDiff(allData[i].data[k].x) <= streak) {
            a.WriteLine(getDateString(getDateFromM(allData[i].data[k].x)) + "," + allData[i].data[k].y);

To run this script open cmd and execute:

wscript lumosity.js

Full script can be found there.

Plotting data

It’s a bumpy ride, standard Lumosity charts don’t give that detail view. We can clearly see, that there is a pattern in my learning: up and down in small altitude and then huge spike up.


PS: I am not sure what happened on 2014-12-06 with that huge drop off.


Looking at charts by category, they all have distinct patterns or don’t, what happened with problem solving ?

other charts

Check out my other projects
Active forks newsletter
Get a glimpse on open source active forks. Weekly newsletter with selection of repositories and their active forks.


Comments are closed