Spectral Wrapped 2020: What I’ve done, What I’m planning to do (and why I need your help)


The year is coming to an end, and I’d like to express my thoughts about what happened for me in terms of dota content. And, of course, share my future plans with you!


Here are the things I’ll cover below:

  • Struggles and why stats hub may be shut down in a year or so
  • What is this “Simon” project I keep talking about
  • What I did/achieved throughout the year
  • What I’m looking forward to

Russian version: https://vk.com/@spectraldota-spectral-wrapped-2020-chto-ya-sdelal-chto-hochu-sdelat-i-poc

About support

To be honest, I don’t really feel comfortable asking for a support. I don’t feel like I deserved the right to, but pandemic situation affected me and my family, just like many others, and it also affected my finances. I suspected things may go this way (and even wrote about it half a year ago), but hoped it would turn out OK.

Over the year I’ve spent some time optimizing my expenses and resources usage related to my site. It was pretty helpful, but there’s still a very high chance I may be forced to shut down the site (including stats hub) to reduce my expenses even more.

It also led to either shutting or slowing down some of the more time expensive side projects, most notably Nerds Hero Builds (I wasn’t active in updating them in the past six monhs), various dota and artifact related tools, etc. (Well, it also had a lot to do with health issues and reducing my overall load, but it’s another story.)

Considering a lot of people are relying on all this stuff I’m working on, and all of the dota related stuff being result of my long time analyst/coach/developer work, I don’t really want it to end like this right now, but I’m not sure I’ll be able to keep it all going. So, what can you do to help?

First of all, just spread the word. Tell your friends about things I’m working on, share the data, leave a link to the data if you’re using it, things like that. Even if everything else doesn’t really suit you, it’s still the easiest and the most effective way to help.

And then there are donations. There are Ko-fi / donationalerts pages as a more accessible way. You can find the links here, and you may also contact me directly if you have any questions.

But probably the best way to help would be some form of “partnership” — or “mutual donation”, as I would like to see it. Kind of like Patreon-style awards, except without Patreon and awards are decided individually for everybody.

I don’t want to put up any kind of ads and I want to keep all the data and stuff as open as possible. However, there are some things that I don’t really have available for public use — including full datasets and dumps, as well as data that can only be fetched directly from the database, or didn’t fit into report blob, or even some additional tools I’ve set up for myself to get even more cool data with a nice view.

I can provide this kind of data, as well as custom reports, data sheets and things like that (e.g. you’re a coach/analyst and you’d like to get detailed data about a team) as a reward. This kind of stuff can be discussed in discord DMs.

And as a bonus I’m planning to launch a donations leaderboard on my website sometime in January.

But enough with the sad stuff. Let’s talk about more exciting things!

What’s is this Simon?

If you were here long enough, you may remember me talking about some kind of “Simon” every time.

Long story short, initially it was LRG 3.0.0: a “new and better stats hub with better reports”. At some point it became clear that it’s easier to rewrite everything from scratch, and it’s when I decided to stop working on LRG 2.* branch, focusing on the new stats hub.

Eventually it changed to be a prototype of a platform oriented for competitive games and stats for them, setting up “reports” via specific filters (and not limited by report size and other factors). Technically it was also capable of working with different esports games, as long as there’s a data source.

The first prototype of Simon was later reused for another similar project, and then developed into something new, made with an organization. Sadly, the project was put on hold indefinitely, and I didn’t really like the direction it was moving (or rather not moving) to begin with.

That’s also when I got back into developing some features on top of the old LRG2 code, adding laning and items to the stats hub.

So, why does it all matter?

  1. I’d like to get back to my old prototype and start working on a new project “from scratch”. Well, technically I already did, and it doesn’t have anything in common with the old prototype (neither architecture or even tech stack). New version of Simon is potentially way more feature rich (and it has different ideas in its foundation).
  2. It’s a lot of work. It requires a lot of time. And I’m also afraid working on it right now may end in a situation similar to what happened with Nginx. Practically it means I can’t really commit to full-time development of this thing.
  3. Any of the old code is unavailable to me, so everything will be made from scratch. But I have enough knowledge and experience to do something like that with ease.

I’m not sure how things will go down the road, but I can say for sure that I’m willing to create such a thing. I see potential in this idea and I will try to implement it no matter what. However, as it is currently, it will take a lot of time, so I wouldn’t expect actual results any time soon.

Just to hype it up, here is a list of planned features I have for Simon (and had it implemented already in some way):

  • Support for multiple nodes setup (match queue sync and split, shared cache, communications between nodes, etc)
  • Various performance optimizations
  • Lazy queue (meaning some matches and responses will be updated in the background)
  • Dynamic reports, custom user reports (aka filter sets), all the old reports would be reimplemented as this kind of dynamic report presets
  • Data filters (including time and patch filters)
  • Detailed analysis of training matches for teams (as a separate report, too)
  • Evaluation of the average skill level of a match (based on event type, participating teams or whatever else)
  • Advanced features like wards stats, smoke positions, movement vectors

I’m also thinking about in-built support for funding, so I’ll be able to get money to keep all this stuff working. I considered a subscription based system that would allow access to some of the advanced features, but all the data overall would still stay as open as possible.

All of this stuff I either have implemented before for other projects or experimented with it, and it sounds exciting to me to get all these features in one place and available to others. I would also like to make it open source (at least partially). But, well, time and money still remain the biggest problem for me at the moment.

Things I did over the year

Now let’s talk about cool stuff that’s happened over the year:

I made a lot of structural optimizations and automatics. It’s not noticable from the outside, but it improved my workflow a lot. Two changes that proved to be the most useful in a long run are migrating to Stratz API for additional analysis of matches and using custom made alert and management bot to be aware of what’s happening on my servers.

I was working on my Soul Ring Podcast. It was known as “Spectral Podcast” and “Spectral Servant” before and it was practically the first dota related podcast in CIS. As my IRL problems were on the rise, I couldn’t really keep up with podcasts (especially since it’s kind of hard to get anyone on my podcast LUL), so I decided to put this activity on hold…

…but I used all of the free time I’ve got from podcasts to start making big texts about dota stats, with fancy graphics and other stuff. And I also started to make videos (in Russian). Funnily enough, the hardest part of it all so far is improving the sound of my own voice. It’s still not ideal, but I’m getting there!

Items stats article: https://leamare.medium.com/these-items-will-not-lose-you-the-game-69495e50751a

But that’s not all!

Since there were no DPC events this year, I switched to collecting all the tier 1/2 events (based on Liquipedia tiers).

Aside from that, I also introduced meta reports, covering last 2 weeks of ranked matches and last 4 weeks of competitive matches. Meta reports are the most visited reports at the time.

At the moment there are 941 existing reports available — it’s not 1000, but it’s close enough!

Aside from that, there were some visual improvements to the look of stats hub over the course of the year. Some changes were minor (like changing the color scheme), some allowed me to add announcements to the header, some made it easier to get additional information. And I also added support more localizations.

And did you notice this cool art in the header?

It’s actually a submission Con_Fessio made for TI10 Secret Shop! It started with my small idea, and she was able to implement it in a perfect way, catching the radiant beauty of Mercurial.


But believe it or not, it’s not how it initially started! Initially it all started as a Telegram sticker pack. It’s still not quite finished, but it looks very freaking cool, don’t you think?

All there is for now. There are also discord emoticons based on these

You can add the pack here: https://t.me/addstickers/Spectre_spectral_gg

But the best part of all the improvements are features.

First of all, I finally got to launch the “Courier” node to manage all the Dota related resources that have different formats and scattered throughout the different places. Aside from hero portraits, item icons and skill icons there are also player photos, custom made hero renderers, custom made hero portraits for artifact and underlords exclusive heroes, team and league logo fetchers and other stuff.

What it means is I have a more convenient way to get all these resources and use them in my projects, including stats hub, without worrying about it all.

There are also some new features I introduced to the stats hub directly. The most important ones throughout the year were hero laning stats and items stats.

Back when these features were introduced, I made articles to explain them to users and to share some interesting insights I noticed in the data.

Laning stats article: https://medium.com/@leamare/talking-about-lanes-in-dota-3469ab2cd814

While both of these components are extremely helpful for improving your own understanding of the game and matchups, items component can also be useful for entertainment (especially records section) and less experienced players. My favorite feature of the year is the build progression tree: it’s a graph that represents items that are usually bought on a hero and in what order.

Currently I can’t include advanced items and laning data for specific players or teams because of technical limitations in reports’ size, but it’s a possibility I was looking into for a while now.

And even though there was no TI this year, I still managed to enjoy other events while working with the data. Notably, there were Epic League and Omega League, which were the most important events for me this year in a way.

Plans going forward

And now about my plans for the future.

Obviously, I can’t guarantee that I’ll be able to work on all of this stuff, because of the same reasons I explained back in the beginning of this text. However, I still have a lot of hopes and ideas, which I’d like to make a reality this year.

So here’s my 2021 wishlist:

  • Hopefully, I’ll be able to make the first public version of Simon.
  • New spectral.gg design. I kind of have the mockup ready, so it’s only a matter of time when I’ll be able to implement it.
  • Integrate blog into the website. Both this and the new design may be implemented along with another pet project of mine.
  • “Kamina”: the new UI for the old stats hub, as well as huge server side performance improvements to significantly reduce memory and disk load.
  • “Cytomander”: a pipeline for myself to generate some cool infographics and other visual content.
  • Launch the hero guides section on my main website. It will allow users to preview my in-game hero builds directly from the website, as well as get a hint into hero progression trees based on immortal level performance.
  • Live matches monitoring API and a cool tool to keep track of ongoing matches.
  • New method of collecting ranked matches, as well as re-fetch of all the high ranked matches since 7.00 or 7.07 for Simon. I would also like to include average MMR approximation for even more in depth data.
  • Major improvements to the hero board tool
  • More cool content about numbers in dota!
  • Hopefully, visit The International 2021 in some way or form.

And that’s about it! There are a lot of things in terms of my future plans and ideas. And even though the situation seems rather depressing right now, I hope I’ll be able to make all these things true and work on more cool things next year. And I hope I will be able to make a something worthy.

Thank you for your support in 2020, it really means a lot to me.

I will try my best to make you all proud in 2021.




Writing code and stories. https://spectral.gg/

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

10 Powerful Python One-liners

Go — Composite Pattern

Increase Your Developer Confidence With a Great Django Test Suite

Testing a peanut butter and jelly sandwich

Understanding Django’s custom management commands

8 Popular companies use Django for their web applications

How I installed CUDA 10.0 for PyTorch in Linux Mint

Convert Miles To Kilometer Using Python

Python Lambda Functions Deployed With The Typescript AWS CDK

Heading image

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Lea Spectral

Lea Spectral

Writing code and stories. https://spectral.gg/

More from Medium

[Week 3] Constructive Feedback

How I wrote 3 books in 3 months in a war zone — Ukraine

What is smm panel free? Have you heard its name?


50 bits of advice to help you as a school leader