announcing cuesbey.com's first external beta - graphical cube comparison

106 views
Skip to first unread message

Rob Dennis

unread,
Apr 8, 2013, 2:13:23 AM4/8/13
to riptide-l...@googlegroups.com
Hello everyone,

I'm a full-time software developer who's been working on a cube-related software development projet for awhile now. This has both been to keep my skills up (I do more project management than I'd really prefer), and because I think the cube community has a number of "user stories" that I don't think are currently being addressed by the tools we have available.

The first user story I'm taking on is:

"As a cube designer who's interested in finding new cards, I often want to compare my list to other lists I've seen out in the community, and I'm interested in where they are different. These differences may lead me to new cards I hadn't even thought of that I'd be able to check out."

I remember when I first built my list, I was going off of:
  • Andy Cooperfauss's google doc
  • Justin Parnell's OTHER google doc
  • Matt Kranstuber's MTGS post
  • Usman Jamil's pictures of his cards laid out on his tablecloth
And as I'm sure you can appreciate, this made it pretty difficult to get a sense of what people were doing differently (let alone get at the 'why' of those differences). In the absolute best case, you're flipping between two tabs with lists of card names, and maybe you can see some differences.

Well, maybe the difference is because that guy counts Porcelain Legionnaire as a white card, and that guy counts it as a colorless. Maybe someone groups all the spells in a color together, but that person splits creatures and non creatures apart in listing.

Even setting that aside, it's difficult to actually derive meaning from two lists of names side by side, so in software development, the concept of diff tools and particularly, graphical diff tools are useful for this purpose.

Here's a mockup showing what it might look like to compare the first MTGO cube to the Post-AVR update (black had the most changes and was discussed here). The information that was around at that time did make it easy to show "these were 10 black cards that left, and these were 10 that entered" but that does lose a bit of the nuance when you consider that not all those cards were costed the same or were the same general type:

I want to be able to compare someone else's cube to mine, and do so in the way that I like to lay things out. Now, the way that I lay mine out is different than all of yours, so essentially, we're talking about sorting a cube based on completely configurable parameters, which is kind of a tough task, and although not present in the mockup, I do have all the dials and switches that the system supports up on the deployed version.

So here, check this out:

This will load the latest deployed version of the cube diff app, and it comes loaded with the before and after card names from that mockup (e.g. the diff of the first two MTGO cubes) but they're just text areas. Enter your own cube! Someone else's cube! I don't care :)

That part's relatively easy, but the part I really need to get right are the controls I want to give designers to control how those two lists are conveyed to you (in they exact way you want):
  • The layout is controlled by that funky text box in the top right (I'm calling it a spec) and it's not really user friendly right now, but if you edit it, it is respected and shows that I'm sorting on the fly. Ideally, there'd be ways to edit this in a more friendly way, and probably saving off the way that you personally like to arrange things
  • The particulars of the sorting are also controlled by the (ugly and waaaay too wasteful of space) checkboxes that allow you to set a number of "heuristics" based on how you lay out a cube. Not all the names are that helpful right now, but check "off color flashback is gold" if you think of Lingering Souls as a W/B card, and "phyrexian always pays life except for abilities" if you think of porcelain legionnaire as a colorless 2-drop but Birthing Pod as a Green 3-drop. There's obviously a lot more there.
The whole thing is opened-source and although I've spent a lot of time on it, and it's good enough to answer the core user story (graphically compare cubes the way you want), it's rough and needs to be improved.

I'd like this community (over twitter, MTGS, or what have you) helped shape the direction for this project by way of passing on comments, requests, bug reports to the github issues page:

This thread would be a great place to ask questions and for me to report back on when certain restrictions are fixed and deployed (I've been pushing hard this week for release by DGM preview season, but I'll need to dial it back to keep family stuff in perspective/priority).

Current caveats and known issues:
  1. the text boxes both want a correctly-spelled* card name per line. Duplicates should be on separate lines instead of something like (2x Day of Judgement)
  2. I haven't really done a lot with multicolor yet, so the spec treats color names (e.g. 'White') as "Mono" color
  3. everything looks ugly and the spacing/real-estate usage is so wasteful the site isn't really usable
  4. the spec needs a different editing widget that's actually easy to get the result you want
  5. the layout of >2 tables on a tab isn't going to be great and isn't going to scale well
  6. If you type in card names the backend hasn't seen before (e.g. all pauper cube cards :o) it takes about a second per card for that to come back to your browser, although as they start coming in, the page should be updating incrementally
  7. if a name is invalid it's not reflected anywhere in the gui, but the number of cards next to the text areas only increment if a valid card is found, so if you don't see a number you expect, there's a bad name that in the future will be communicated to you
  8. Limitation of the system: all the card info is being pulled from gatherer.wizards.com (using this sweet project) and there have been cases where gather is wrong, or not working, or updates and breaks APIs sooooo yeah be prepared. It's cached after we get it the first time though so we're not hammering their server or at risk unless we're fetching stuff for the first time.
* It's ok to type Aether Adept instead of that weird combined AE; split cards are in the normal form of "Fire//Ice"; don't have trailing spaces or stuff before the name that you don't want interpreted as the actual name

Jason Waddell

unread,
Apr 8, 2013, 3:26:59 AM4/8/13
to riptide-l...@googlegroups.com
Sweeet! I need to compare two of my cube lists for an article this week, and this will be perfect for that. Can't wait to try it out!

Eric Chan

unread,
Apr 8, 2013, 4:12:19 PM4/8/13
to riptide-l...@googlegroups.com
This is fantastic, Rob. I am convinced you are an actual wizard.

It's funny, just last night I had Google Chrome tabs open to Andy Cooperfauss's list, Kranny's list, and Jason Waddell's list, as well as my own. Andy's is the closest in size to my cube, so I expect to use your tool as a starting point of comparison in the future.

Jason Waddell

unread,
Apr 8, 2013, 4:51:25 PM4/8/13
to riptide-l...@googlegroups.com
Do you have a recommended browser for using? I ran it in Chrome, and it was running for a minute or so. During the runtime, I couldn't click over to the other tabs (it kept popping back to white as the list was being populated). 
Another bug I ran into is that one of the cards listed as removed was in both lists (Magma Jet). 
Next, it might be useful to also have an overall summary of the In / Out difference between the two. 

Very great stuff though! I've attached the text files I used for reference. 
cuesbeyNew.txt
cuesbeyOld.txt

Rob Dennis

unread,
Apr 8, 2013, 8:53:55 PM4/8/13
to riptide-l...@googlegroups.com
ah, thanks a lot for providing the actual files.
taking a look at it, there's a fair number of names that have a trailing space:


e.g. 'Magma Jet ' (single quotes added for emphasis)
I mentioned that was a known issue, but given that it's an easy fix and hard for the user to notice, I've fixed it.

there were someactual misspellings:
  • Kozilek's Preditor
  • Boneshredder
  • Armageddon [Cata]
  • Ghor Clan Rampager
I found this by jamming invalid names in there (it's kind of ugly currently)
---

the tabs going to White is an artifact of the page refreshing a bit too zealously when a bunch of new cards are being inserted, I had made it stay on the same tab if the spec was unchanged, but the way I did it worked only for hitting the diff button, not when we get newly inserted cards.since most of the cards are inserted now. I can fix that too, but I'd expect to have worked better next time you tried simply because most of things are inserted.

---

the summary view is supportable (could be better if specifically tackled) by changing the spec to:

{"Any": {
    "appearance": "table"
}}

for one long list, OR:
{"Any": {
    "appearance": "table",
    "both": {},
    "added": {},
    "removed": {}
}}

to have three columns on one tab, OR:
{
    "both": {
    "appearance": "table"
},
    "added": {
    "appearance": "table"
},
    "removed": {
    "appearance": "table"
}}

to have one category per tab

I just added the "Any", but the third one was there before. The second one seems nice?

--- 

As for recommend browser, Cuesbey is unit tested on safari, chrome and firefox (all on my mac). I don't have more "simulation" testing in yet, but I need to sooner rather than later. So I guess the real answer is "not IE" but that's only because I don't have a test platform.

Rob Dennis

unread,
Apr 8, 2013, 9:11:19 PM4/8/13
to riptide-l...@googlegroups.com
checked it out on cuesbey.com and it's showing the latest dev changes, so yay.

Slight update to my last suggestion about browsers, I'd recommend chrome for now just so you can highlight card names and display with Scry:

I'll add similar popups before general release

Jason Waddell

unread,
Apr 9, 2013, 2:29:45 AM4/9/13
to riptide-l...@googlegroups.com
Tried it again this morning and it's looking really awesome. Great work!

Jason Waddell

unread,
Apr 9, 2013, 3:21:49 AM4/9/13
to riptide-l...@googlegroups.com
One thought I had is that it would be really awesome if you could allow users to upload a list that gets stored publicly, so that others can simply select it from a menu to compare it to another list. Then Eric (or whoever) instead of having tons of tabs open can just pop two lists from there together and go to town. 

Rob Dennis

unread,
Apr 9, 2013, 7:55:51 AM4/9/13
to riptide-l...@googlegroups.com
Definitely. I'll even talk about the importance of it in fancy design speech where you capitalize the nouns and stuff.
The idea that Cards are grouped together within the concept of a Cube (which in turn has an Owner) is fundamental to the way I'm modeling this system (not in priority order):
  1. Cubes have Owners
  2. Cubes change over time (e.g. Cubes have revisions)
  3. Cards appear in particular types of Cubes (e.g. Cards cluster to form Archetypes; Cubes support certain Archetypes)
  4. Cubes are draftable (they exist to be played) and when doing that you draft Cards
  5. The 'goodness' of a Card in draft is influenced by what you have taken (Archetypes you're in) and what you know to be available (Archetypes supported)
  6. Owners have Cards they may not know about, that may be cube for their Cube(s) based on the Archetypes they support

And those are all user stories that are supported by the current one I'm taking on: people (Owner) upload their cube list (Cube) for the purposes of identifying differences from a different persons cube list. These differences can either speak to different Card choices within an Archetype, or different Archetypes support (or some other Constraint like 'unpowered' or 'pauper')

This is an excellent time to say Thanks to Eric for popping in, and number 5 on that list is definitely the idea supporting AI, so I'll look forward to your eventual commits in this area. ;)

So, lot of text in answer to your post, but I'd say that the there's a requirement before general release to display the differences between Cubes, and the Cube may be saved in the system, or is currently unsaved and is a list of Cards. What's deployed currently is the unsaved Cube case.

Rob Dennis

unread,
Apr 9, 2013, 9:44:43 PM4/9/13
to riptide-l...@googlegroups.com
bat signal for Jason (and other non-singleton users):

this is closed and deployed

"2x Day of Judgement"
should be interpreted as two cards both named "Day of Judgement"

So you can just of 1000x steppe lynx of whatever it is that you want :p,

also, if you're like me, and you keep your list in tappedout.net, this should support copy+pasting the list from the edit screen right into cuesbey (those of you who use other sites, let me know and I can support that too)

Jason Waddell

unread,
Apr 10, 2013, 12:31:09 AM4/10/13
to riptide-l...@googlegroups.com
Ah yes! The only thing holding me back from even further increasing my Steppe Lynx count was a cube comparison algorithm that could handle the load. 

Rob Dennis

unread,
Apr 14, 2013, 1:39:50 AM4/14/13
to riptide-l...@googlegroups.com

Alright, relatively big (as in importance versus difficulty) feature updated: 

https://github.com/rdennis463/cuesbey/issues/1

Finally broke out multicolor so you see it by section. It's not documented anywhere else, but in the future I intend the category label (the column header in the picture below) to by whatever the user wants there, not necessarily the category expression that actually gets used to sort things,



Rob Dennis

unread,
Apr 14, 2013, 1:45:22 AM4/14/13
to riptide-l...@googlegroups.com
note that the man-lands are in the multi-color section due to the heuristic: "activated_ability_costs_affect_color" (heuristics are another thing that will have a more human readable label). Unsure if that's really "correct" in most people's eyes, but this is actually one of the reasons I'm on the hook to support dragging/dropping your cards around to "override" the suggested sorting. https://github.com/rdennis463/cuesbey/issues/13

FlowerSunRain

unread,
Apr 14, 2013, 1:43:05 PM4/14/13
to riptide-l...@googlegroups.com
I think the Worldwake Manlands are best described as "multicolor".  Granted, I may not be the best person to ask as I don't "balance my color sections", but while they do colorfix, I think that without having mana to activate them they won't get played in most cubes.  Now, if your cube does run Azorious Guildgate, putting Celestial Colonnade as a multicolor card does seem dubious.

Rob Dennis

unread,
Apr 15, 2013, 5:27:32 PM4/15/13
to riptide-l...@googlegroups.com
one thing I haven't ticketed is the idea that cards might have one or more themes/characteristics that people might want to sort by. As an example, lands and artifacts may or may not provide color fixing. Maybe an organizer wants to have section in their breakdown for U/W fixing and that's a different section than for R/W fixing. 'Man-lands' might be an example of one of these characteristics.

at a high level, I'd like to provide the tools for designers to have the difference displayed with the same level of customization that the google doc crew is used to:
Kenny Mayer - https://docs.google.com/spreadsheet/ccc?key=0AibgWfz0ukmOdDNhOHlucjcxUi1wVy00NDhLbDUtUlE&hl=en_US
The Magic Box (TSG and Eck) - https://docs.google.com/spreadsheet/ccc?key=0AoHL6Fkjil-OdEd4ZjlPV2RuN3FaaUx3VmVVOTFaN3c#gid=2
Cooperfauss - https://docs.google.com/spreadsheet/ccc?key=0AtgPHnQ6KiQfdExSb0NLdzdQV0NUeHZvLUppekp1b3c&usp=drive_web

these are all very different, although all make sense on their own terms. Those differences are part of why it's tough to compare your list to theirs in the first place, but I want to do as much as I can make that final report make sense to how you personally lay things out

Jason Waddell

unread,
Apr 18, 2013, 4:16:32 AM4/18/13
to riptide-l...@googlegroups.com
Bug: I noticed in the multicolor section that my Gruul cards didn't show up. 

Rob Dennis

unread,
Apr 18, 2013, 9:33:16 AM4/18/13
to
Ah, so this is because I forgot to put that in the spec (top right text area),

I'll add it into the default, but a temporary workaround is to write it in:

  "Multicolor": {
    "appearance": "table",
    "White/Blue/2-color": {},
    "White/Black/2-color": {},
    "White/Red/2-color": {},
    "White/Green/2-color": {},
    "Blue/Black/2-color": {},
    "Blue/Red/2-color": {},
    "Blue/Green/2-color": {},
    "Black/Red/2-color": {},
    "Black/Green/2-color": {},
    "Red/Green/2-color": {}, 
    "3+ Color": {}

(bolded what you should add)

UNFORTUNATELY, I noticed that there's some unknown server error happening, and my login key for the server is at home :( so I'll have to check that out tonight at around ~7pm EST and cuesbey won't be working until then. I'll need a better way to monitor outages like that :(

Rob Dennis

unread,
Apr 18, 2013, 7:09:20 PM4/18/13
to riptide-l...@googlegroups.com
fixed https://github.com/rdennis463/cuesbey/issues/16
and confirm the site is actually working

Rob Dennis

unread,
Apr 20, 2013, 1:45:16 AM4/20/13
to riptide-l...@googlegroups.com
Alright, big/huge feature, and probably the last for awhile, instead focusing on testing and deployment

This is a link to a diff:
http://cuesbey.com/#/5573b050-9a6e-4207-ae88-5aa692daf5cd

it just so happens that it's my cube in the before, and it's blank in the after (compare it yours if you'd like :)
selections you make on heuristics, and updates you do to the spec will be saved too.

I'll be using these links in commenting on people's cubes, since dad gummit, this is what I made it for

Jason Waddell

unread,
Apr 20, 2013, 2:26:49 AM4/20/13
to riptide-l...@googlegroups.com
Hi Rob,



Currently when I click that link nothing really happens. It looks the same as before, only now the diff button does not work.

Rob Dennis

unread,
Apr 20, 2013, 3:31:29 AM4/20/13
to
unfortunately we're going to run into a pretty sizable roadblock if the site gets popular thanks to using the free-tier of amazon EC2, you were asking for a diff, right as the system was requesting all these random obscure cards from jay boosh's cube:
(it had to call out to gatherer for ~200 cards, which is relatively expensive but would go away if I upgraded to a paying thanks to apache being able to handle more than a couple things at a time)

I'd expect it to work now that those cards are all in the system

edit: oh, dear, due to a bug, apparently I'm only saving one shared thing a time, the one I linked is the latest one that clobber the others. WHOOPS

edit: corrected, and the 3 links I sent out as a test run (here, the magic box guys, and kranny) I remade a fixed it so the old links work. that's a bit embarassing 
Reply all
Reply to author
Forward
0 new messages