# Multi-Blind Analytics and Statistics Application



## Dylan Swarts (May 21, 2020)

So recently I've picked up programming again, and started learning Python. I am doing Delphi at school but I don't intend on using it after school really. I've had an idea for a program, just something small, that can work out your average exec, memo and total /cube for a multiblind attempt. (Input being x/y and your total time[memo time])
This would save me some small amount of time after my attempts.

But then I decided I want to rather make this part of a bigger project. Which leads to this idea of mine. Having an app that can give you stats about your attempts, like the above-mentioned. There is quite a couple of things I would like to add initially, some of which I can not yet do, but am busy learning and practicing to do.
These include:
- Storing all your entered attempts (with your comments about each attempt)
- Generating a graph with your attempts on (not sure how I want to do this, since there is the time and points factor)
- Being able to extract your attempt data directly from csTimer (have looked into this, might need to ask user for attempt no. input I think, and result in format x/y)
- Being able to rank an attempt of yours against WCA's WR and CR rank (so you can see how your attempt would have fared if it were official, I think it is a fun thing to see)
- Organizing your stored attempts by date or by points (and time as 2nd priority obviously)
- Having the application itself have a timer, so you don't need to use anything else for multiblind. (just thought of this, but might be worth adding, I'll see)
- Being able to customize (so, if you don't care about memo splits, you can still use the app properly, although this app's main function is to give stats about your attempts)

I know that not many people will use this, as multiblinders are relatively few, and many might not care about such stats, but it will teach me a lot about GUI's in Python, and many other things that will be handy in my future of programming.

The night I started working on the coding, I finished a part of the backend for the project I intended to make for myself (avgs/cube)
The green text in the bottom left is the input from the user, as I would have used the script. It then gives out the text beneath it as output. Pretty happy I figured out how to do that part so quick. Took some effort to dig out the values I needed to calculate with, and there is probably ways it could be approached better, but this is what I could do. (I just see I forgot to add avg total/cube, will quickly add that to the code later)


Spoiler: Screenshot






Currently I am learning to create the GUI, and it is still quite new to me, so I might not progress further for quite some time.
I have set no date for completion, as I do not want to code big things that I do not understand, because then potentially I won't be utilizing them as best I could for this program.

Thought I would create this thread for discussion about the program, a place for me to update you all on it (and keep me motivated to keep working hard at it), and feedback of course.


----------



## AlphaCuber is awesome (May 21, 2020)

Dylan Swarts said:


> So recently I've picked up programming again, and started learning Python. I am doing Delphi at school but I don't intend on using it after school really. I've had an idea for a program, just something small, that can work out your average exec, memo and total /cube for a multiblind attempt. (Input being x/y and your total time[memo time])
> This would save me some small amount of time after my attempts.
> 
> But then I decided I want to rather make this part of a bigger project. Which leads to this idea of mine. Having an app that can give you stats about your attempts, like the above-mentioned. There is quite a couple of things I would like to add initially, some of which I can not yet do, but am busy learning and practicing to do.
> ...


This is cool when would it be available to use


----------



## Dylan Swarts (May 21, 2020)

I think I would like to 'release' it once most or all of those features I mentioned are implemented, but that could be like at the end of the year (maybe longer), but I could also share the project as soon as I have the GUI designed.


----------



## ProStar (May 23, 2020)

Instead of having a normal timer, I'd suggest having a timer that counts down, and then gives off a little alarm when your 1hr(or less if you do <6 cubes) runs out, that way you don't have to worry about going over. Maybe before the attempt you enter how many cubes you're doing(so that it knows how much time to give you), and then when you stop the timer it asks how many cubes were solved, so that it can immediately sort. Also you could make it so that in your results the time goes to how much you took instead of how much was left(to keep it consistent with the WCA)


----------



## Dylan Swarts (Jun 2, 2020)

Quick update on things. Admittedly I have not spent any time on the project since announced, but I have not forgotten about it. I am giving more attention to school work at this time but as soon as I fall into a routine I will get back into my programming. I have done some research a while ago about GUI applications and came upon Kivy, which might be more suited as a GUI module for my app than Tkinter. It is more difficult and I need to take that into consideration before making a decision. Alternatively I can create it in Tkinter and later do in Kivy... I know that Kivy can be used for mobile apps, but how many people are going to use their phone for multiblind over their computer? Not many. I don't think that should be used to make my decision. Kivy can give a better look though, which is nice, and I'd like a modern aesthetic look for this program.
anyway that's it from me for now, will keep you updated when I have some progress.


----------



## Dylan Swarts (Jan 4, 2023)

Haha this is funny. I did ditch this project in the end, but recently I started an Android application to actually do the same as this project, using Java (since at the time I thought we would be starting with Java at uni this year) (it's now Python but I'm glad I got some Java exposure).
It's basically complete now, and I will be releasing it soon. I don't intend on placing it on Google Play yet, as it's 25 dollars. It will be available on GitHub and later it should be downloadable from my personal website (which I haven't made yet).
The sample attempts are just some of my attempts in one of my csTimer sessions that I added here.
I'll attach some screenshots of the emulator.


Spoiler: Screenshots






Some features:

The Graph area shows attempts within a certain cube range (default all attempts). So you can set it to only show attempts between 2 and 8 cubes if you want (because time/cube differs between your big and small attempts) You can also just compare all attempts of the same size.
You can view either memo/cube, exec/cube and total/cube all together or each apart, as well as only the points obtained per attempt (currently negative points show up too).
I only showed a portion of the Attempt tab because there are a couple more components and interactions in the process, including editing times after the attempt and adding comments.
You can do attempts even by closing / minimizing the application. On reopening, it will continue timing accurately (calculates based on system time of attempt start).
Scrambles are generated using TNoodle.
The stat page per attempt (image 4) shows a number of nice statistics, including the rank of the attempt and the performance compared to your other attempts of the same size. (this attempt performed better than 2 of the other 4 attempts of 4 cubes). You have access to your scrambles here.
I think I should add axis labels for the graph, and have a bit of cleanup to do to the stat page per attempt.
Any other suggestions are welcome (if you have ideas for improving the look, also let me know, I suck at it), but this project was mostly a learning experience and I just want to publish a final version before diving into Python and hopefully some ML by the end of the month, so I might not do much more work on it after finishing touches.

I will make another post when I make a release version on Github but you can have a look at the project here.


----------

