Introducing CubeTutor.com

lebenski

CubeTutor Developer
I was recommended this forum as a great place to talk about cube so I thought I'd come over and introduce myself and my website CubeTutor.com.

Rather than giving you a long blurb about what the site does, I think this 2 minute promo video does a better job of explaining it:


I've noticed that some of you on here are already using Cube Tutor, so that's great :) For everyone else please do check it out and let me know what you think. I'm taking a strong steer from the community about the direction I should take the site in so please do send me your feedback.

Moderators - Hopefully you don't mind me promoting Cube Tutor like this. I couldn't find anyone to get in touch with to ask permission.
 

Jason Waddell

Administrator
Staff member
Hi Lebenski, thanks for stopping by! Sure, it's perfectly fine to promote CubeTutor here.

Your site looks very promising. I've been looking for an easy way to share my list, as I currently manage mine in a notepad file and have to upload to some site in order to let others see it. I tried out CubeTutor the other day and ran into a few roadblocks:

- When I tried to upload a .txt file, it condensed any cards that I had multiple copies of to just a single copy. My cube isn't singleton, so importing new changes from a .txt file require me to manually add the cards I have multiples of each time.
+ I did really like how your text file reader parsed out all my extraneous notation, and showed what was "left behind" after reading in the cards.
- No matter what I tried, I couldn't get the file reader to recognize split cards, and had to add them manually.

Minor issues:
- After using deckstats, I've gotten rather spoiled with not having to spell my cards correctly. Not all that important, but the autocorrection was always a welcomed feature
- A minor detail is that the "Cube Editor" doesn't sort the cards the way that I have them mentally organized, but this isn't really that big of an issue. Personally, if I can continue to manage my cube in a .txt file, then in one button update my list by uploading my file, then I am fine.

Lastly, as a statistician, I'm curious about what sorts of algorithms you use for the bots.
 

lebenski

CubeTutor Developer
Hi Jason,

Thanks for that, it's really important to keep this kind of feedback coming in.

I touched on Bulk Upload + Multiples in the Cuesby thread, but just to reiterate I think mandating a particular file format that people can use to upload cubes containing multiples could work. Although it does slightly defeat the point of "change nothing" bulk uploading. I'm unsure how I could reasonably generalise and discover card quantities without mandating a format. Using a CSV you might have:

4, Birds of Paradise,
4 x Birds of Paradise,
Birds of Paradise, 4,
4 Birds of Paradise,
2, Birds of Paradise, Revised,
2, Birds of Paradise, Beta

Split Cards are a real pain generally. Wizards really broke the mold when all of a sudden one card could be two cards. It makes it difficult to build an application based on rules when there are so many exceptions! At the moment in order to get Fire // Ice into the site you have to specify Fire // Ice (Fire). This isn't ideal, and I will be removing the bit in brackets soon.

Autocorrect would be awesome. I could definitely put some work into this to make the process of bulk uploading easier.

How would you like to mentally organise the cube? In a similar fashion to the View Cube page, or something else?

The short version of the bot picking algorithm is that they use observed pick orders. The long version is as follows. I would describe it as a close approximation to real drafting rather than a full on simulation, but I want to be as open about stuff like this as possible in order to improve it.

1. The bots are assigned colours at the beginning of the draft. Each colour is assigned to a maximum of three bots. The bots force these colours.
2. Each bot receives a pack and orders it by pick percentage. For example if Sol Ring has been picked by a human 9 times and passed once it has a pick percentage of 90%.
3. With the whole pack ordered by pick percentage the bot examines them in order. If the card is colourless it will take it a percentage of the time equal to the pick percentage, i.e. a Black Lotus with a pick percentage of 100% will never get passed*. If the card is coloured and in the bots colours it will take it regardless of the percentage.
4. If the bot reaches the end of the pack without having picked a card, it will hate draft the card with the highest pick percentage.
5. The bot shuffles the pack in case it is passing to a human and passes the pack.

*a note on this point. When a card has been picked less than 5 times, one Pass is added to the percentage to ensure that the card does get passed by the bots. Without this as soon as a colourless card is picked once without having been passed, it would never be passed again by a bot. This would artificially affect the pick orders as human drafters would see the card a lot less. It just means in the first few drafts that you will see colourless cards slightly more regularly than the pick percentage dictates.

I will revisit this algorithm at some point and look to remove the forcing and also try to find a sensible way for bots to make associations between cards. 'I have Entomb so I should take Exhume over Dark Confidant'.
 

Jason Waddell

Administrator
Staff member
For me, I'm just using a .txt file that looks like:
Mother of Runes
Isamaru, Hound of Konda
Student of Warfare
Steppe Lynx
Steppe Lynx
Steppe Lynx
Dryad Militant

Regarding split cards, I tried even changing the text in my file to "Far // Away (Far)", to no avail.

The organization thing isn't that important to me, but I don't really classify my hybrids anywhere near my gold cards. Well, except sometimes (e.g. Boros Reckoner). Sometimes I do weird things too. In an upcoming cube project I have two Shriekmaws, and one is filed at 2 CMC and one at 5 CMC. Point being that I don't think there's a systematic way to match what I do, because I kind of shuffle things around on a case-by-case basis. Not that it really matters (it's the same 360 cards being drafted regardless of where I have them in a .txt file). I don't use the editors on other sites either, so it's not that big of an issue.

One nice property of DeckStats, however, is that it will maintain the order of the cards as I have uploaded them. So if somebody looks at my list, they can kind of see the mindset behind it (e.g Dryad Militant not in the Selesnya section).


You "+1 Pass" on cards that have been drafted fewer than 5 times is a neat little semi-Bayesian thing. This is probably the type of problem a full-time statistician could spend a lot of time on, utilizing the correlation stucture of the data, etc.
The 5 picks threshold seems a little arbitrary though. You could always take the Bayesian approach that is the backend of the BoardGameGeek ratings. Effectively you add in a number of "neutral ratings" that are averaged with the actual data. In this case, it would be something like "1 pass, 1 pick" added to the real data (or "2 pass, 2 pick". The higher the number the stronger the prior). These fake ratings affect all cards, and as you get more data the Bayesian estimate converges on the true mean.
 

lebenski

CubeTutor Developer
In that case, I could make a really simple change to the Bulk Uploader. When it finds a card name it 'sweeps' over the list again to see if it can find the same card name again. It keeps doing this until it fails to find. This would have an impact on the time it takes to process, but that's probably marginal enough. I will give it some testing.

FWIW You can currently use CMC overrides to achieve the effect you want with Shriekmaw, i.e. set one to 2 CMC, one to 5 CMC.

Maintaining the order is something my model (or in fact bulk uploader) aren't really set up to do right now. I know everyone thinks of these things differently but I'd like to think that it is possible for you to configure your cube such that the view list page (e.g. www.cubetutor.com/viewcube/1) reflects the ordering that you have in your mind. If you could let me know what sort of differences there are, that would be great.

Fair point on maintaining the neutral ratings for all of the picks. I'd kind of figured that after 5 picks or so the system has a pretty good idea of the "passability" of a card, but you right it is a little arbitrary and I'm by no means a statistician!
 

lebenski

CubeTutor Developer
The change to the Bulk Uploader was trivial and performance is still totally acceptable so this change will be in my next bugfix release :)
 

Jason Waddell

Administrator
Staff member
I don't know if it's useful for you for testing, but attached are my current cube files. The eldraziDomain one has everything spelled correctly, and the 360.txt one is untested with many likely spelling errors.
 

Attachments

  • 360.txt
    6.8 KB · Views: 4
  • eldraziDomain.txt
    6.8 KB · Views: 1

lebenski

CubeTutor Developer
Thanks! 360.txt gives 353 cards and you can see from the output that it missed:
far // away
zombie cutthoat
act of agression

Adding those three gives 356.

It also picked up 3 cards you've marked as 'out' i.e. Grafted Wargear, City of Brass, Gemstone Mine.

Take those off giving 353 (not sure if Oracle of MD is included in the count or not). Then add the extra 10 lands it couldn't find at the bottom (1 of each fetch) and you've got 363. Not sure if there is an error in the list or if it's picked up the extra 3 cards somewhere?

With eldraziDomain.txt it found 363 cards and you can clearly see that it didn't find two split cards
toil // trouble (toil)
far // away (far)

Not sure why these aren't being picked up - I will look into it. Should there be 360 cards here also? I'm guessing one of the additional ones is [Putrid Leech].

If indeed it is finding 'phantom cards' then 1% error seems like a big improvement on how it worked for you before though! And it should be fairly easy to eyeball the view list page to find them.

I will be putting this change out soon.
 

Jason Waddell

Administrator
Staff member
Hey, thanks for testing! Those numbers sound about right for 360.txt, I've got some assorted sloppy notation in there. Not sure where the two additional cards come from in the eldraziDomain file, but it sounds like it's getting pretty close!
 

Chris Taylor

Contributor
Jason, I think you and I might have different ideas for the bulk uploader. Do you keep patch notes of your cube, or document changes? (Eg: Shrine of Burning Rage out, Burning-Tree Emissary in)
Clearing your cube and re-adding the whole thing each time makes change logs hard to discern. Is this intentional on your part?
 

Jason Waddell

Administrator
Staff member
Well, I never really pay attention to change logs in a formal way, I constantly test things then occasionally want to upload a "stable" version of my list. If CubeTutor can automatically detect the differences between my list on Date X and my list on Date Y, that's great, but I myself don't look at it that way.

Truth is I don't really know all of CubeTutor's features, because the the upload barrier to entry was enough to keep me away for the time being. So it's very well possible that I change my behavior later on.
 
Well Lebenski, we are all much better off for knowing about your free site, so thanks. I uploaded my cube, I enjoy the features, and as a software developer myself, I patiently await for more functionality to roll out. :)

My questions are: Is this something that you eventually plan to make money on? If so, what's your business model? If not, how are you paying for hosting?

My only feature request at this time is for the ability to download a text-based backup for my cube. I can understand if you don't want to make it easy for others to mine all the data off of your site, and not allow anyone to easily download a txt for everyone's cubes. But for personal sanity, I'd like to be able to backup my cube to a text file that would work on your bulk uploader.
 

Chris Taylor

Contributor
@Jason: I find it helps me keep track of the direction my cube is heading in/where it's been. I try my best to record somewhere why I cut the cards I cut and why I added the cards I added, in that they might come back one day. Kinda like Kranny's idea of an on-deck binder. (I don't hold much of a collection and mostly proxy, so my on deck binder is essentially all of magic)
 

Jason Waddell

Administrator
Staff member
Yeah, I have a few "on-deck" binders. I'm not saying my method is optimal, but I've really never felt the urge to go look at past changes / versions of my cube. The only time I keep track of changes diligently is when I need the information for articles.
 

lebenski

CubeTutor Developer
Well Lebenski, we are all much better off for knowing about your free site, so thanks. I uploaded my cube, I enjoy the features, and as a software developer myself, I patiently await for more functionality to roll out. :)

My questions are: Is this something that you eventually plan to make money on? If so, what's your business model? If not, how are you paying for hosting?

My only feature request at this time is for the ability to download a text-based backup for my cube. I can understand if you don't want to make it easy for others to mine all the data off of your site, and not allow anyone to easily download a txt for everyone's cubes. But for personal sanity, I'd like to be able to backup my cube to a text file that would work on your bulk uploader.

Hey Peter,

I built this site for myself and as such never really went into it with any kind of business model in mind. A suprising number of people have asked me to support donations but at least while I have a full time job I'm not really interested in monetising it in any way. I always so to those who want to send donations that they can support the site a lot better just by promoting it in any way they can :)

So far I've managed to stick to a very low subscription tier with the company who are hosting Cube Tutor in the cloud, Cloudbees. I couldn't possibly recommend these guys enough. At some point I'll have to upgrade my database tier and add an extra box to the cluster to handle load but for the time being, the site is performing perfectly well (I do a LOT of caching!) so I'm not having to having to pay very much for hosting.


Cube List export will be coming soon! I maintain a list of feature requests so I will add your vote to this.
 

Eric Chan

Hyalopterous Lemure
Staff member
Hey lebenski, I'm a little late to the party here (serious, a crap ton of posts today!), but I wanted to issue a big, warm welcome to you. Most of us on this forum have been following your site and your progress with great interest, particularly given the frequent pace of your updates. Even at this early stage, it already appears to be one of the most useful tools available to cube designers, and we can't wait to see what else you have in store. I'm personally honoured that you'd step in here to solicit feedback and consider our requests. So, by all means - promote away!

Like Jason, I run a lot of multiples in my cube, and the difficulty in manually entering all of my multiples has kept me from really digging into the site too much. My normal upload format for multiples is exactly the same as his - I'll list a cards multiple times over several lines if I'm running more than one. It sounds like you're already addressing that, though, so I'll be sure to play around with your site some more.

Lastly - thank you for all your hard work on the site! People like you are a huge asset to the cube community at large, and it's because of your tireless effort that cube designers and players everywhere will benefit. You have my gratitude!
 
Hey Peter,

I built this site for myself and as such never really went into it with any kind of business model in mind. A suprising number of people have asked me to support donations but at least while I have a full time job I'm not really interested in monetising it in any way. I always so to those who want to send donations that they can support the site a lot better just by promoting it in any way they can :)

So far I've managed to stick to a very low subscription tier with the company who are hosting Cube Tutor in the cloud, Cloudbees. I couldn't possibly recommend these guys enough. At some point I'll have to upgrade my database tier and add an extra box to the cluster to handle load but for the time being, the site is performing perfectly well (I do a LOT of caching!) so I'm not having to having to pay very much for hosting.


Cube List export will be coming soon! I maintain a list of feature requests so I will add your vote to this.
Thanks for your candid answer. I had assumed it was a labor of love, but so few things in life are truly free I felt compelled to ask. I will have to keep cloudbees in mind in the future.

Keep up the good work!
 

lebenski

CubeTutor Developer
Hey lebenski, I'm a little late to the party here (serious, a crap ton of posts today!), but I wanted to issue a big, warm welcome to you. Most of us on this forum have been following your site and your progress with great interest, particularly given the frequent pace of your updates. Even at this early stage, it already appears to be one of the most useful tools available to cube designers, and we can't wait to see what else you have in store. I'm personally honoured that you'd step in here to solicit feedback and consider our requests. So, by all means - promote away!

Like Jason, I run a lot of multiples in my cube, and the difficulty in manually entering all of my multiples has kept me from really digging into the site too much. My normal upload format for multiples is exactly the same as his - I'll list a cards multiple times over several lines if I'm running more than one. It sounds like you're already addressing that, though, so I'll be sure to play around with your site some more.

Lastly - thank you for all your hard work on the site! People like you are a huge asset to the cube community at large, and it's because of your tireless effort that cube designers and players everywhere will benefit. You have my gratitude!

Thanks a lot Eric! To me there's nothing more rewarding than putting something out there and having people enjoy it.

The fix for the Bulk Uploader will be going out today or maybe tomorrow so hopefully that will help you too.
 

Rob Dennis

Developer
Hey lebenski, glad to see this thread. Really happy to have you putting in the work on cubetutor and I think it's well positioned to be a big help for those of us wanting more than tappedout/deckstats/google docs/text files.

There's a definitely a couple parts of specifying a cube in bulk that I have experience with on cuesbey.com and just super briefly:
- I felt it best to merge the two halves of split cards into one row in my local database, there's no Fire, or Ice row, just a row with a name of "Fire//Ice" (with some accounting for people entering it with spaces)
-- this happened to make it easy to put Fire//Ice in UR, but it doesn't lend itself to making Boom a 2-CMC and Bust a 5-CMC
-- Who/What/When/Where/Why is formatted completely differently than other split cards in the gatherer page, so good job making it the same (assuming you're scraping gatherer and not using a third party database)
- I think you made the right call just making all the names ASCII (Juzam Djinn and not Juzám Djinn) but it's the kind of thing that I could see being a bit brittle with people bulk uploading ascii and utf-8 mixed together, so a generic "watch out for that"



Extraneous other comments (e.g. free/worthless advice):
- if you're doing authentication, I would have voted for some like oauth so as not to have to come up with yet another username/password combo.
- If you're having folks enter username/password, that usually means running the login page over https to me, but that's my day job talking.
 

lebenski

CubeTutor Developer
Thanks Rob! Yeah split cards are a real pain to deal with. I will get around to sorting combining them as you describe soon because I get so many questions about why they are split. I'm scraping a combination of MagicCards.info and Gatherer and that's how they have them set up, but it doesn't really make much sense for Cube Tutor.

For authentication, I wrote a little library way back when that provides a service layer down for simple login. In hindsight outsourcing this code probably would have been preferable but I'm quite tied in now at a relational level with user ids & cube ids so it'll probably stay that way. You are totally right about using SSL on login. It's one of those things that I decided to ignore while the site was small and somewhat personal but I will sort this out very soon!
 

Jason Waddell

Administrator
Staff member
Hey Lebenski, thanks so much for your work! The bulk uploader is working perfectly. Well, almost. :)

----------------------------- (30)
----------------------------- (20)
----------------------------------- (50)
----------------------------- (26)
----------------------------- (24)
----------------------------------- (50)
----------------------------- (26)
toil // trouble (toil)
----------------------------- (24)
----------------------------------- (50)
----------------------------- (29)
----------------------------- (21)
----------------------------------- (50)
----------------------------- (29)
----------------------------- (24)
----------------------------------- (53)
far // away (far)
----------------------------------- (40)
----------------------------------- (22)
----------------------------------- (45)
200 + 53 + 40 + 22 + 45

It says it doesn't find the two split cards, but then when you go to the actual cube they are there. So it finds exactly 360 cards (yay!) and leaves the fuse cards behind in the "scrap" pile (but this is just a cosmetic thing).
 

lebenski

CubeTutor Developer
Hey Lebenski, thanks so much for your work! The bulk uploader is working perfectly. Well, almost. :)



It says it doesn't find the two split cards, but then when you go to the actual cube they are there. So it finds exactly 360 cards (yay!) and leaves the fuse cards behind in the "scrap" pile (but this is just a cosmetic thing).

Fantastic! I guess then the only problem is removal of the card name from the file. Will get this sorted soon.
 

Jason Waddell

Administrator
Staff member
I drafted your cube Jason (at least I think this is your account)... it was fun!

http://cubetutor.playworks.cloudbees.net/draftdeck/1182

Good to hear! Yes, indeed, that looks like a deck from my new cube. Oh, I don't know if this is possible, but the ability to, with one click or something, classify all non-creature spells as "non-creature" or something like that could be very useful. I have a difficult time looking at the curve for different colors when things are spread across Instants, Sorceries, Planeswalkers, etc.

Either that, or perhaps some way to apply bulk modifications and selections in the cube editor?

Thanks again!
 
Top