AlgDb.NET

StachuK1992

statue
Joined
Jul 24, 2008
Messages
3,812
Location
West Chester, PA
WCA ID
2008KORI02
YouTube
Visit Channel
I got an idea a LONG time ago to make a proper algorithm database.
I finally have the time and competency to do it.

This will be a full replacement of and improvement upon the SS Wiki, pages of printable PDFs (Sorry Andy Klise!), BOCA Database, and most every other algorithm database currently available.

This is a high claim to make, but it will be done!
By the end of the year, the following features should be implemented:

Anonymous viewers:
View algorithm pages
These pages will have full support for:

-sorting by QTM, HTM, etc length​
-sort by how many users know the algorithms (see later)​
-filtering by move group ( only)​
-"Invsere alg" button to display a popup to set up the case.​
-Links to alg executions on YouTube​
View User pages
User pages will list all alg sets used by a specific user, and what algs they use.​
Want to know what T-perm Rowe Hessler uses?​
** Users => Rowe Hesser => PLL => T-Perm, done.​

Registered users:
Note that you use a certain algorithm, which will be added to your user page
Add an algorithm to a case
-At some point: When you add a Sune case to OLL, it will automatically be thrown in CLS, and things like that where cases are entirely equivalent.​
Print dynamically-generated algorithm sheets.
Supply custom settings such as:
-Displaying Rw vs r​
-Color scheme preferences for images​


Upvote/Downvote algorithms.
This will allow users to later sort by how many people like an alg.​
Algs with a certain low reputation will be reviewed and removed if dysfunctional or stupid.​

Administrators:
Add/Remove/Edit CaseGroups (PLL is an example of a 'case group')
Toggle Admin role of users
I will likely be hand-picking the admins, but feel free to apply.
Disable Users
Add/Edit/Remove CaseGroups
Add/Edit/Remove Cases
Remove algs from Database

We plan to support the following Case Groups:
PLL
OLL
CLL
ELL
CLS
ELS
ZBLL
ZZLL
CoLL
CmLL
Last-Slot F2L
2GLL
CPLS
VHLS
ZBLS
WV
VHLS
2-Slot F2L
OLLCP
etc.

Don't bother adding suggestions yet for Case Groups.
They will be fairly easy to add later on.

An alpha version is currently available at algs.azurewebsites.net and algdb.net

Go to algdb.net.
The one hosted via Azure will be our QA box, basically, so any in-development versions should be found there.

I'm not making this thread because we're anywhere near done.
We're not.
I want suggestions! That's where you come in.
Give them to me here.


I'm working on this as an independent study with another student (Nicholas Beers, not a cuber [yet], just a coder).
I'll get him to come around to SS sometime once the semester starts (2 weeks)
What this means:
-we both have ~7hrs/week dedicated to this project and will be graded on our progress.
-we cannot accept commits from outside sources (you) until late-December.

Also, Nick might be interested in having a mobile-specific version of the site - probably read-only.
Is there a /significant/ interest in this? The website's responsive and looks lovely on most every device - try it out.

In case you're curious, technologies used:
ASP.NET MVC 4
C# 5
Entity Framework 5 (ORM)
HTML5, CSS3, JavaScript
jQuery
BootStrap
SQL Server 2012
Visual Studio 2012
Azure Websites
Mobile application development (With jQuery Mobile, DevExpress, Xamarin, Kendo UI, etc?)
PHP (VisualCube) porting to C# potentially, or hack of twisty.js with Lucas Garron.
SVN
Unfuddle

I make a lot of commits, and many deployments to algs.azurewebsites.net
Check there every other day if you're highly interested.

Once features are more thoroughly tested, I'll throw them onto algdb.net.
Feel free to check for former link for 'beta' features


I'm spending quite a bit of time on this.
Tell me about features you want.
All will be considered.
TELL ME ABOUT BUGS, I WANT TO KNOW ABOUT THEM ALL!!!

I'm excited.


Oh, and if you couldn't tell, I'm back.
-statue

PS - can't respond to this thread? Apply to be part of the private forums. Once we have a more functional release I'll have this moved to a more accessible area of the forum.


Make an account. Add algs. Tell me if/how it breaks!!!
 
Last edited:
Considering the current state of the algorithm database on the speedsolving wiki, I think this will be welcomed with open arms entirely. Something's needed to be done about that for a while and complete overhaul is definitely the best way to go about it, and thank you for stepping forward and taking it upon yourself. This is an insane task to handle so I wish you the best of luck, collating, making it neat, weaning out the bas cases isn't too hard, but the case equivalence and automation will be a massive thing and when this gets fully up and running will be absolutely phenomenal.

Just a couple of things off the top of my head, black and white printable PDFs as well as colour, will definitely be useful for some. The mobile site being read only would be extremely useful for so many people, definitely consider this after it is up and running.
 
Thanks for the comments guys - I've received a number of PMs as well!
Lots of stuff to still do, but a full semester to do it!
My next concern is dealing with equivalent cases.

I would love to have one "add 3x3 alg" text box and have it automatically add to the appropriate cases. Need to think about architecture a bit here, though.

Also, figuring out a replacement for VisualCube.


Users: what are the most PRESSING needs to you?
ALSO: try the site on as many devices and sizes as possible. Tell me if the site looks silly on everything.
 
Last edited:
I would suggest that you should be able to note that you use two (or more) algorithms for a case, depending on the angle at which you get it from, e.g. U perms or sunes for a lot of people.
 
Of course! "add 3x3 alg" being super generic like that is a long ways away, though.

What do you mean about the anonymous edits? You mean don't let "just anyone" add algs once logged in?
Everything that causes a write in the database should be possible to trace it back to a person. So if you are not logged in you don't get to edit. And if you are logged in every write should be linked to your login
 
Everything that causes a write in the database should be possible to trace it back to a person. So if you are not logged in you don't get to edit. And if you are logged in every write should be linked to your login
Funny, that's actually the very next push, maybe tomorrow.* Users having CreateDt* Algs have CreateDt, User linked* Case additions have CreateDt, User linkedFrom here, the plan is to:* Allow users to vote on algs/choose "I use this"* Clean up display a bit.* Do more with user pages.
 
Is that a thing that's done often?
I've never heard of it being used, but it's at least possible - just feels dirty.
I have been doing this since SQL 2000 and .NET 1.1
It is not dirty at all, it is as clean as can be
* Make a db_read_user and a db_write_user
* Give them dbreader and dbwriter rights on the database
* Make two connectionstrings
* Make two db_connections
* For every db_action you have to use a db_connection anyway, now just make sure that you use the one with minimal rights
* Don't allow anonymous users to execute any db_action that needs write-access
* Apply the same technique for a forum/wiki/filestore

Now if someone tries to do any sql injection he cannot do a drop/create/insert/update without being at least known in the system
 
Very cool approach!
Right now I just have [Authorize] and [Authorize(Roles="Admin")] thrown about my various ActionResult methods which at least helps a bit!

I thought that EF would prevent SQL Injections, but after a few scary Google searches...NOPE. Well yes, but still room for bad things.

I'll definitely be looking into this more, thanks!
 
Updates have been made.

Algs are now linked to your account, and have createDates attached to them.

Traversing around the website is a LOT easier now.

Lots of other styling changes.
Expect another major push in a week.

Feel free to add algs now, to PLL that is.
I'll be filling in cases for OLL/etc over the next few days.

Next push:
"I use this alg"/voting system.
Pictures for individual cases.
Etc.

As always, suggestions are welcome.
 
I'm excited that this project really has the potential to be the hub of cuber activity when looking for algorithms. It's going to be very useful once it has a large user base and algorithms for every subset. Being very interested in OH myself it would be great to see a OH section full of algs.

One question though, is it possible to input algorithms using parentheses and numbers? For organizational purposes, I mean. I was trying to input them and it wouldn't let me. For example I use the OLL (M' U)3 (M' U') (M' U)3. (Faster than it seems at first :))Now this looks a lot more complicated and confusing when broken down into M' U M' U M' U M' U' M' U M' U M' U.
 
Back
Top