My face

David Heras

Data Science & Esports since 1991


LoLSP (LoL Stats Provider)
League of Legends, Java web

First of all, I have to say that this was my very first project. I didn't want to create something really cool but just something that would actually work. And I did this which is a simple League of Legends app that shows your recent matches and your champion mastery points.

The application is also running on a Tomcat 8 server but this time is Servlets only and what this app does is when someone inserts its summoner and region it will let him choose between recent matches or champion mastery and whatever the selection is the data needed is downloaded once the button is pressed. All the data is being downloaded via the Orianna API.

If the user selected recent games the application will show its 10 last games in an horizontal card style, like and so on. If champion mastery was the selection the application will sort the champions by the number of mastery points descendent and in a standard card style way, like Magic cards, Hearthstone and that stuff.

Summoner Spells
League of Legends, Java web, Big Data

Summoner Spells is a web application that downloads all the ranked data from the summoner that makes the request and analyses that data in order to provide cool and simple charts that will display in what lane that summoner got most wins, with what champions it was and with what combination of summoner spells. And also there is another chart that just displays in a donut the wins per lane that the summoner achieved with the summoner spells combination he choosed.

The application is running on a Tomcat 8 server, so it's a Java app that has been developed with the JAXRS framework. So what this app does is just look for the summoner and upsert (insert or update if already exists) its information into de MongoDB. By other side there is a Python script running that looks for updates in the collection where the summoners data is stored, whenever a new summoner is registered it will start downloading all the ranked games and when all the games are downloaded it analyses the games and creates new data that will be readen by the Java app and represented as cool tree map and donut charts.

The data is being downloaded via two APIs from the same developers, one is Orianna and that is the one used for Java, and the other one is Cassiopeia and that one is used for Python.

The charts are the free options of a tree map chart in HighCharts and a simple donut chart in AmCharts.

All the UI (html, css, js) is made by Creative Tim, which is a great company that shares its work for free and without limitations (almost). Go check out its page, links below in the footer.

Esports Bits
DivisiĆ³n de Honor (Spanish League of Legends League) stats
JSON, CSV, Big Data, Tableau

Esports Bits is an experimental project based on stats of DivisiĆ³n de Honor matches. There is a need that is not satisfied yet either by LVP or third parties. Providing from simple charts to more complicated analysis is the main goal of this project.

There are a lot of tasks that have to be done manually at the moment. The matches are custom matches and there is no information of the summoners or the teams so that information has to be aggregated manually. Also there is no way to track the matches if it is not by going to the LVP page and then to the match history link that they provide. There are other ways like looking for recent games of a team member but I think that that is not the right way.

Once I know what match I want all i have to do is get the data in JSON from Riot API and then transform it into CSV. At the moment I'm doing that thanks to the tool provided here. That tool transforms the JSON into CSV and let you download the file. The need of a CSV format is because I'm using Tableau Public to visualize the data.

That is all the tools I use for now. The data isn't stored in any DB by the moment. In the future I want all the data stored somewhere but right now I'm wondering how the structure would be and whether to use SQL or NO-SQL data bases. I'm also waiting for some feedback to decide what path to take and where to focus.