You seem to have Javascript disabled. That is no problem - this site does not require Javascript at all!

Jussi Hämäläinen

Full-stack Web Developer


Original launch:

April, 2015

Build time:

50 hours (~5 days)

Main technologies used:

Node.js, Javascript, HTML5/CSS, C++

Link to homepage:

Currently offline (read bottom of the page)

My first serious stab at Node.js. This project is all about analysing chess games at large quantities and in parallel. Doing a full move-by-move analysis of a chess game is very CPU-intensive task; therefore it makes sense to distribute analysing into many nodes. I achieved this through server automatically handing out batches of fresh chess positions to anyone asking for them.

Basically, the server has a collection of - say - 10 000 chess games. Whenever user connects, the server hands him - say - 100 chess positions. User then analyses them using CPUs of his computer (little JS script takes automatically care of this) and sends complete analyses back to server. Server does some validations and then saves analyses into a file. So the server is basically just for book-keeping and handling connections; all real work is done by end-users.

The fun part is that anyone can participate with regural web browser. Nothing to install. Another fun part is that the client-script actually utilizes multicore-CPUs automatically. So there are two levels of parallelism; multiple users analysing simultaneously with each user analysing multiple position simultaneously. Very cool setup, I think.

I learnt now Node.js works. I learnt how to use Javascript and Web Workers to utilize parallelism on client-side. I also learnt that managing potentially hundreds of distant "worker" nodes (that is, personal home computers of web surfers) is pretty difficult, but with solid design, can be done. There is a lot of book-keeping going on the server as server hands out not games, but batches of individual positions.

In the end, this is by far the most challenging Javascript-project I've done up-to-date.The complete system is currently running as a free service on the official website of Finnish Chess Federation. Custom Joomla plugin is tracking analysis status there. So far, about 30 000 chess games have been analysed, with more than 800 hours of cumulative CPU-time spend by web users.

UPDATE 2nd May, 2016 I am not anymore maintaining web services for Finnish Chess Federation. Due to this, the above-mentioned "shakkianalysointi"-service is currently offline.

Update 2019: This project spawned similar follow-up project for analyzing positions using AWS Lambda. Video here: