A problem for a framework challenge
I had the great opportunity to participate for the second time in the framework challenge organized by BogoDev, the biggest dev community in Bogotá, Colombia. I was invited to help define the problem to be solved by the dev teams. On this occasion, the challenge took place as part of the Image Festival (http://www.festivaldelaimagen.com/) in Manizales, Colombia. Many talented people attended the festival, most of whom work in design; therefore, the problem had to be visually-oriented. Taking this into account, here is an extract of the problem, in case you want to try it:
Considering recent threats from the outer space, the government has decided to create a research group for monitoring all the space bodies inside the solar system. This group has developed a new set of remote sensors that produce information every second. This information indicates the position of every object inside the solar system in a Cartesian plane with axis XYZ with the sun as the origin. The information received has the following format:
The first segment corresponds to the date and time when the measurement was taken, the second segment always will represent the earth (T) and its values for X, Y and Z respectively. Then, the other objects detected with ‘C’ for comet, ‘M’ for meteor and ‘O’ for other. What the contestants teams should do is to create an application that reads every second one line from a text file and displays on the screen the three axis and the objects in a manner that it should me easy for the user, see all the objects changing position every second.
Each team will receive a text file with 360 lines of text and on each line there will be a record as shown above with the earth, some meteors, some comets and some other space objects. This file should be used for developing the application but during the day you will receive more files that should be read by the application without changing its implementation.
At first glance, this sounds very easy to implement. But one thing that contestants always had to keep in mind is that the application should be capable of handling huge amounts of data, as there are thousands of thousands of objects in the solar system. On the other hand, since the three axes should be shown at all times, they had to think of a way to meet this requirement without any delay or lag time.
The first thing that they found challenging was how to scale the values (XYZ) to make them fit into the screen. For the three axes, the values went [-100,000, 100,000]. The other important thing to consider is that they had to calculate the width and height and offset the values to make them move around the center of the display area. This particular requirement took the greater part of the day.
Then interesting things started to happen... I sent them a file with 360 lines of data (one per second) and 100 objects per line. At this point, the rendering was less elegant, and I knew that by the end of the day when I sent them the file with 10,000 objects per line, none of the applications were going to be able to render them all.
The cool thing is that, as I expected, all the frameworks were capable of managing all the data in the backend. But my concern was more for the frontend part, because this was the Image Festival, and the interfaces had to be absolutely flawless.
By evening, when I evaluated the applications, I saw beautiful interfaces that indeed would be useful in a real life scenario if there were a center for monitoring space objects. But the problem was with the rendering; despite the winning team having been capable of rendering all the objects, the interfaces were a little slow.
Because executing the rendering took the teams most of the day, we did not get the chance to play around a little bit longer with what I had prepared. One of those things was to measure how the applications would embrace changes if teams were asked to read from a web service instead of a text file. There were additional requirements that someone like you might be tempted to implement but, sadly, I cannot list them all here, because I will spoil the next Framework Challenge in July!
In case you want to play a little bit with the data, you can use this gist https://gist.github.com/julianvargasalvarez/5502224 to produce your own files.
_You can see some pictures from the event below and on BogoDev’s Facebook page.