# Unified BLD Algorithms Database



## mark49152 (Oct 27, 2021)

For a long time I've wished there were an equivalent of speedcubedb or algdb for BLD algorithms, to save having to search across so many individual alg sheets. So, finally, I got round to making one.

https://bldbase.net

I hope you find it useful. It's a work in progress so consider it "beta" and please do let me know of any issues. Ideas for improvements are of course very welcome too!

Update: It now has corner & edge comms, wings, midges and centers for bigBLD, and 3BLD parity algs.


----------



## OreKehStrah (Oct 27, 2021)

Just took a quick look and it looks awesome! I’m glad to see a nice bld resource site that gathers some of the best resources into in place!


----------



## qwr (Oct 27, 2021)

Maybe ask @Gil.zussman to add it to his site


----------



## Keroma12 (Oct 28, 2021)

Nice!
Question: If I update an alg in my sheet, will this database reflect that update?
Recommendation: Add in some user settings so that people can specify their letter scheme and see that instead of UFR-notation and Speffz.


----------



## mark49152 (Oct 28, 2021)

Keroma12 said:


> Nice!
> Question: If I update an alg in my sheet, will this database reflect that update?
> Recommendation: Add in some user settings so that people can specify their letter scheme and see that instead of UFR-notation and Speffz.


Hi Kevin, thanks! And thanks also for sharing your sheet & algs.

Yes, if you update your sheet the new alg will be added and the old alg will also be retained. I have a script that scrapes all the Google sheets I know of, checks anything that looks like an alg, works out what they do, and adds all the correct & useful algs into the database. It's manual at the moment, but I might set it up to run weekly or even daily.

It also spits out a list of typos/errors for each sheet and I can provide those back to the sheet owners - if you or anyone else would like that, just let me know. It will detect algs that don't appear to do anything useful, e.g. due to typos, and some of those I just fix in the DB. However, the script ignores labels in the sheet so it can't tell you if a correct alg is attached to the wrong case.

For yours, there are a lot rejected but that is because of the ! symbol, e.g. [R: [U2!, R D R’]]. What does that notation mean? It looks like I could just safely ignore the symbol, is that correct?

Customizable letter scheme is definitely on my to-do list, once I have all the alg types in there.


----------



## kubesolver (Oct 28, 2021)

The page is missing the donate button!

Ability to quickly find the alg based on the letter pair from custom scheme would be fantastic.


----------



## Keroma12 (Oct 29, 2021)

mark49152 said:


> For yours, there are a lot rejected but that is because of the ! symbol, e.g. [R: [U2!, R D R’]]. What does that notation mean? It looks like I could just safely ignore the symbol, is that correct?


Yes, you can ignore the "!"s. I just use them to indicate that the inverse should be in the same direction. So (U2!)' is U2 not U2', and the above becomes R U2 R D R' U2 R D' R2' as opposed to R U2 R D R' U2' R D' R2'.

Glad to hear about the script, and that you plan on allowing customized letters.


----------



## mark49152 (Oct 31, 2021)

kubesolver said:


> The page is missing the donate button!


LOL, nice to think people might appreciate the site, but I've got no plan to accept donations! 



Keroma12 said:


> Yes, you can ignore the "!"s. I just use them to indicate that the inverse should be in the same direction. So (U2!)' is U2 not U2', and the above becomes R U2 R D R' U2 R D' R2' as opposed to R U2 R D R' U2' R D' R2'.


OK, fixed. My code pays no attention to the direction of half turns anyway.

Just updated the site with parity algs, plus some other general improvements. Custom letter scheme is next on the list.


----------



## eyeoh (Oct 31, 2021)

Thanks for the site Mark! This is so much easier than tabbing through different spreadsheets and locating the right cell.

Btw, there are two Ts in Elliott.


----------



## mark49152 (Oct 31, 2021)

eyeoh said:


> Thanks for the site Mark! This is so much easier than tabbing through different spreadsheets and locating the right cell.
> 
> Btw, there are two Ts in Elliott.


Apologies, fixed now. And thanks for sharing your alg sheet!


----------



## eyeoh (Nov 1, 2021)

Oh just to be clear - I'm not Elliott, but I have made the same mistake before when spelling his name when talking about his sheet!


----------



## mark49152 (Nov 1, 2021)

eyeoh said:


> Oh just to be clear - I'm not Elliott, but I have made the same mistake before when spelling his name when talking about his sheet!


Ah OK - thanks anyway for the correction, and the clarification!


----------



## abunickabhi (Nov 1, 2021)

mark49152 said:


> For a long time I've wished there were an equivalent of speedcubedb or algdb for BLD algorithms, to save having to search across so many individual alg sheets. So, finally, I got round to making one.
> 
> https://bldbase.net
> 
> I hope you find it useful. It's a work in progress so consider it "beta" and please do let me know of any issues. At the moment it has only corner & edge comms, but parity algs are coming soon, and bigBLD a little later. Ideas for other improvements are of course very welcome too!


Really good tool.

One feedback that I have is that DF edge buffer should be removed. DF is much inferior as compared to any U layer buffer. Even beginners should not try out DF in any situation or circumstance. Beginners UF buffer methods are BOP and Eka.


----------



## mark49152 (Nov 1, 2021)

abunickabhi said:


> Really good tool.
> 
> One feedback that I have is that DF edge buffer should be removed. DF is much inferior as compared to any U layer buffer. Even beginners should not try out DF in any situation or circumstance. Beginners UF buffer methods are BOP and Eka.


Thanks! You've already given that feedback on Facebook and unsurprisingly will get the same answer here . It's a database so includes all the main buffers and all the published algs for them, regardless of personal preference. People can choose whichever they prefer.


----------



## kubesolver (Nov 1, 2021)

abunickabhi said:


> Really good tool.
> 
> One feedback that I have is that DF edge buffer should be removed. DF is much inferior as compared to any U layer buffer. Even beginners should not try out DF in any situation or circumstance. Beginners UF buffer methods are BOP and Eka.


I appreciate your concern but please let me decide on my own what buffer I will use even if you think I'm hurting myself. 

Please keep DF buffer.


----------



## DuckubingCuber347 (Nov 1, 2021)

abunickabhi said:


> One feedback that I have is that DF edge buffer should be removed. DF is much inferior as compared to any U layer buffer. Even beginners should not try out DF in any situation or circumstance. Beginners UF buffer methods are BOP and Eka.


Yes and as someone who doesn't think 5-Style is worth it I think you should abandon it since it's a poor use of time compared to other real-world studies.

I thing I have against you also is that you don't main the Qiyi MS. The Qiyi MS is far superior to any Moyu cube and I don't think anybody should buy one, much less main a cube other than the MS. 

I think that we as a community should sue all other companies so that you can only use _my_ cube.


----------



## eyeoh (Nov 1, 2021)

Because I only started learning 3-style corners a bit over a month ago (after getting familiar with Orozco as a test for myself earlier this year), my edges are still done with M2 and will be for some while longer.

So, as far as edges go, I've actually referenced some DF algs in various sheets for M2 (for basic 2-flips, as well as DF-FU/BD, etc). It was also nice to look up algs being taught in various tutorials and see where they "originally" came from; including deciding between which fingertricks to favour.

Everyone who's starting 3-style these days would have stumbled upon stacks of resources favouring UF, so I doubt there's any risk of accidental confusion here. Where the value in a database lies is seeing stuff in context, including historical data for purposes of comparison, etc.

As for BOP for beginners, I have my views against it but won't derail this thread with them as I understand there's an existing BOP thread.


----------



## abunickabhi (Nov 2, 2021)

TheCubingCuber347 said:


> Yes and as someone who doesn't think 5-Style is worth it I think you should abandon it since it's a poor use of time compared to other real-world studies.
> 
> I thing I have against you also is that you don't main the Qiyi MS. The Qiyi MS is far superior to any Moyu cube and I don't think anybody should buy one, much less main a cube other than the MS.
> 
> I think that we as a community should sue all other companies so that you can only use _my_ cube.


Ooops, sorry if I offended you in some way. I am open to all ideas (related to cubing hardware or software).

Its just that I do not want people wasting their time with DF buffer.


----------



## Cubing Forever (Nov 2, 2021)

TheCubingCuber347 said:


> I thing I have against you also is that you don't main the Qiyi MS. The Qiyi MS is far superior to any Moyu cube and I don't think anybody should buy one, much less main a cube other than the MS.


me who was considering buying an RS3M2021 in 2022:


----------



## eyeoh (Nov 2, 2021)

@mark49152, which of Jack Cai's sheets is being polled?

For UFR-FDR-DBR / Speffz KW, Jack is only listed next to [D R2 D2: [R U R', D]], but all the sheets I've found have [U R D': [U', R' D R]].

The ones I've checked: Jack's 3-Style Algs 2021, Jack Cai's 3-Style Commutators (updated 2020), Jack's 3-Style Algs v2, Jack Cai's Starter 3-Style Algs.

I'm guessing there's (at least) one more sheet of his I'm missing? 

*Edit: *Oh, it must be this one (the 2nd one listed on Roman's tables) - which looks like his first sheet: Jack's Comms


----------



## mark49152 (Nov 2, 2021)

eyeoh said:


> @mark49152, which of Jack Cai's sheets is being polled?
> 
> For UFR-FDR-DBR / Speffz KW, Jack is only listed next to [D R2 D2: [R U R', D]], but all the sheets I've found have [U R D': [U', R' D R]].
> 
> ...


Funny coincidence you should post about this now, I just discovered today that Jack has multiple sheets. I've added them all now and they'll get scraped on the next run. Thanks!


----------



## Gil.zussman (Nov 15, 2021)

Oh, wow!

Super extensive and amazing work!

Would definitely provide a link via speedcubedb if given a permission to


----------



## mark49152 (Nov 15, 2021)

Gil.zussman said:


> Oh, wow!
> 
> Super extensive and amazing work!
> 
> Would definitely provide a link via speedcubedb if given a permission to


Yes of course, that would be great, thanks Gil!


----------



## mark49152 (Nov 25, 2021)

Massive update since I last posted here - all bigBLD comms are now added. Currently working on cleaning up some of the alg formatting to eliminate some of the redundant forms and provide some additional useful information about each. Custom letter scheme is still on the list for after that. Any other suggestions, let me know!


----------



## kubesolver (Nov 25, 2021)

I find navigation a bit hard.

A simple suggestion that will save me a lot of clicking would be to add a link. If the selected text would be a link to UFR-UBR-* it would save me a lot of clicking.


----------



## eyeoh (Nov 25, 2021)

Thanks again Mark - I "finished" corners the other week and have just started learning edges this week so this site continues to save me a lot of time.

One difference I've noticed with edges is how it's more common for a blder to switch algs over time (I guess the options are broader with edges). Would there be a way to highlight which alg is the most recent for any given "duplicate" name?

Perhaps names appearing next to a blder's older alg could be _italicised_ so we know which one(s) they've since switched away from?


----------



## mark49152 (Nov 26, 2021)

kubesolver said:


> I find navigation a bit hard.
> 
> A simple suggestion that will save me a lot of clicking would be to add a link. If the selected text would be a link to UFR-UBR-* it would save me a lot of clicking.


Do you mean have one case shown at a time on each page? So one extra click to choose the case to show, but no more scrolling to look for it?



eyeoh said:


> Thanks again Mark - I "finished" corners the other week and have just started learning edges this week so this site continues to save me a lot of time.
> 
> One difference I've noticed with edges is how it's more common for a blder to switch algs over time (I guess the options are broader with edges). Would there be a way to highlight which alg is the most recent for any given "duplicate" name?
> 
> Perhaps names appearing next to a blder's older alg could be _italicised_ so we know which one(s) they've since switched away from?


Possibly. I can't really tell which algs a BLDer currently uses, only what is and is not in their sheet. If an alg used to be but is no longer in their sheet I might be able to show their name italicised. I'll think about it.


----------



## kubesolver (Nov 26, 2021)

mark49152 said:


> Do you mean have one case shown at a time on each page


No, the presentation is great.
But I would love if when browsing the page for say UFR buffer where the first letter is X I could quickly (e.g. by clicking on the comm X-Y) open the page with comms for the same buffer UFR with first letter Y.

In URL words:
Quick links from page t=corn-3cycle&b=C&s=D to t=corn-3cycle&b=C&s=X


----------



## mark49152 (Nov 27, 2021)

kubesolver said:


> No, the presentation is great.
> But I would love if when browsing the page for say UFR buffer where the first letter is X I could quickly (e.g. by clicking on the comm X-Y) open the page with comms for the same buffer UFR with first letter Y.
> 
> In URL words:
> Quick links from page t=corn-3cycle&b=C&s=D to t=corn-3cycle&b=C&s=X


Got it, OK, I'll look into it. Thanks for the suggestion.


----------



## Lykos (Nov 29, 2021)

Oh my god, this is really amazing! I also dreamed about having something like this and I was considering doing something like that.

I have a website that contains some tools that I use for blind training. It's not open to the public yet, but will be soon once I add a few important features. I currently also scrape a few alg sheets, but using your tool would be even better.

There are a few things I can contribute because I also wrote a BLD alg sheet parser:
* I also don't parse labels (like you), but I still try to guess the structure of the alg sheet. But I do that _after_ I guessed which alg does what. Basically I first try to figure out whether rows or columns represent the first piece and then I try guess which rows and columns represent which piece. This is the code in case you are interested: https://github.com/Lykos/cube_trainer/blob/master/lib/cube_trainer/commonality_finder.rb
* In your case, you will probably find a lot of unusable algs or algs that are for the wrong case. If you try to guess the structure, you will instead get a lot of algs that you know are incorrect. (most alg sheets I parsed had a lot of them)
* I the wrote some code that tries to fix the incorrect algs. This was very successful and on most alg sheets, it was able to fix the majority of broken algs. Most algs are broken due to a missing ' or 2 or due to two moves being swapped etc. If you just try those simple modifications, you will get a lot of new useable algs. See here for my code: https://github.com/Lykos/cube_trainer/blob/master/lib/cube_trainer/commutator_checker.rb

I also generated reports that I sent to owners of alg sheets sometimes. The report also included the row in the spreadsheet and the suggested fix.

Let me know if this is interesting for you and if you need anything else.


----------



## mark49152 (Nov 29, 2021)

Lykos said:


> Let me know if this is interesting for you and if you need anything else.


Wow, thanks so much for sharing! My code is in Python so I can't reuse yours directly, but will certainly take a look and see if I can learn anything and use some ideas, if you're OK with that.

You're correct that currently I'm not paying attention to rows/columns to predict each case. I do "fix" a lot of cells, but mostly due to notation variants or errors, missing or wrong symbols, extra characters and comments, etc. If an alg solves the wrong case for its cell, it gets assigned to the case it does solve. If an alg doesn't do anything useful, it's marked as unknown. Many of the remaining unknowns are, as you've said, things like [R D R, U'] or [R' D R, D] or M U2 M U2.

I did put some thought into how to fix unknown algs and detect algs that are wrong for the case, and considered both checking rows/columns and simply looking to adjacent cells for hints. After looking through the unknowns to see what kinds of errors there were, I wasn't convinced I could consistently and reliably determine what the author intended, and wasn't yet convinced that auto-fixing algs was an appropriate thing for my site to do anyway, so I decided for now to put all the unknowns into a separate Google sheet where I could invite the authors and wider community to comment to add fixes. That's still my plan, although I haven't got round to it yet.

I will certainly have a look at your code to see if it will change my mind about whether I can reliably fix some algs automatically. Definitely there are some for which it could be quite easy if the expected case can be predicted from the cell. I might run some tests to see what proportion those are, and evaluate the results to see if they are sensible.

Many thanks again for sharing.


----------



## Lykos (Nov 29, 2021)

mark49152 said:


> Wow, thanks so much for sharing! My code is in Python so I can't reuse yours directly, but will certainly take a look and see if I can learn anything and use some ideas, if you're OK with that.
> 
> You're correct that currently I'm not paying attention to rows/columns to predict each case. I do "fix" a lot of cells, but mostly due to notation variants or errors, missing or wrong symbols, extra characters and comments, etc. If an alg solves the wrong case for its cell, it gets assigned to the case it does solve. If an alg doesn't do anything useful, it's marked as unknown. Many of the remaining unknowns are, as you've said, things like [R D R, U'] or [R' D R, D] or M U2 M U2.
> 
> ...


Yes feel free to reuse some ideas from my code and let me know if I can help. I didn't expect you can just reuse it, it's quite specific to my application even in terms of what input it expects etc and I didn't write it with the expectation that it would be used by anyone else. But the strategy has worked very well IMO. There was a large number of algs that could be fixed by knowing which case it's supposed to solve and applying some simple mutations until it solves it, way more than the ones that had syntax errors like missing brackets. And I understand that going too far into the direction of auto-fixing is bad because it might not be the alg that the author intended. But very simple things like messing up the order of comms, having a U2 instead of a U etc are good I think. If you know which case the sheet is supposed to solve and 

Btw, is the code public? What technologies are you using? Are you planning to add twists and flips or even e2e2? Are you planning to add info which algs sheets this uses? And would you be okay if I scrape the site for my site (giving credits to you and the owners of the alg sheets obviously)? If so, do you have an API I can call or should I try to scrape the website?


----------



## mark49152 (Nov 29, 2021)

Lykos said:


> Yes feel free to reuse some ideas from my code and let me know if I can help. I didn't expect you can just reuse it, it's quite specific to my application even in terms of what input it expects etc and I didn't write it with the expectation that it would be used by anyone else. But the strategy has worked very well IMO. There was a large number of algs that could be fixed by knowing which case it's supposed to solve and applying some simple mutations until it solves it, way more than the ones that had syntax errors like missing brackets. And I understand that going too far into the direction of auto-fixing is bad because it might not be the alg that the author intended. But very simple things like messing up the order of comms, having a U2 instead of a U etc are good I think. If you know which case the sheet is supposed to solve and
> 
> Btw, is the code public? What technologies are you using? Are you planning to add twists and flips or even e2e2? Are you planning to add info which algs sheets this uses? And would you be okay if I scrape the site for my site (giving credits to you and the owners of the alg sheets obviously)? If so, do you have an API I can call or should I try to scrape the website?


Yes I have extracted flips, twists and other algs, just not yet added them to the site. I have a bunch of other features I'd like to work on first. The code is not public and I'm not yet decided whether I will release it, as it's not really general purpose or designed for others to use and I'd have to tidy it up a lot to avoid embarrassment . Let's take it to PM.


----------



## kubesolver (Dec 2, 2021)

I would also find it useful if the server understood more URL parameters 

Namely 
t=corn-3cycle&*b=UFR&s=UBL*
Could resolve to the same page as
t=corn-3cycle&b=C&s=A


----------



## mark49152 (Dec 2, 2021)

kubesolver said:


> I would also find it useful if the server understood more URL parameters
> 
> Namely
> t=corn-3cycle&*b=UFR&s=UBL*
> ...


The URLs aren't intended to be typed directly. I'll look into improving the navigation between sets though.


----------



## kubesolver (Dec 12, 2021)

For myself I have created a link-farm in a cube form to all 3-style algs relevant for me.
Clicking on a cube sticker takes me to algs for My Buffer -> Selected



https://kubesolver.com/bld/


----------

