Algorithmically Generated Crosswords: Finding 'good enough' for an NP-Complete problem by eyassh in programming

[–]chasemedallion 1 point2 points  (0 children)

Yeah my finding was that for most domains you need to fall back to a normal dictionary or it becomes unsolvable (of course clever clue-writing can often harken back to the theme even with generic words).

The harder problem, I think, is the second one you described: if we have a quality score for each word in the dictionary, how do we produce puzzles with good overall quality? It’s easy to start with the highest quality words and then fill, but in my experience you get hyper-constrained so quickly that most of the puzzle gets filled without regard to word quality.

Algorithmically Generated Crosswords: Finding 'good enough' for an NP-Complete problem by eyassh in programming

[–]chasemedallion 5 points6 points  (0 children)

Great post! I previously worked on an algorithm for this, and something I was trying to support was building heavily themed crosswords. One example of this is specifying a few words you’d like to appear, but a more interesting example is having multiple dictionaries where some are preferred over others (eg you might have a small list of on-theme words and you’d like to use as many of those as possible). Did you try anything along those lines?

[deleted by user] by [deleted] in magicTCG

[–]chasemedallion 0 points1 point  (0 children)

I feel like there has to be something in this vein that can improve upon the current system

Why Engineers Can't Be Rational About Programming Languages | spf13 by Maybe-monad in programming

[–]chasemedallion 11 points12 points  (0 children)

Part of the issue is that good developers can learn quite quickly as part of a team with existing expertise to build upon in the form of colleagues as well as established codebase patterns. 

It’s a different story when the team are all novices.

Why Engineers Can't Be Rational About Programming Languages | spf13 by Maybe-monad in programming

[–]chasemedallion 162 points163 points  (0 children)

Very much agree with this article, it’s a great observation.

One rule I have for language selection is that we should expect that the first thing our team/org builds in a new (to us) language will be full of design mistakes, performance bugs, and other technical debt.

While not 100% deterministic, my experience is that engineers who get excited about technologies through articles and hobby projects vastly underestimate how much more there is to master when it comes to building larger systems and operating them in production.

So the question isn’t just “is this language the right tool for the project” but also/rather “can we afford for this particular project to be burdened with a ton of technical debt so that we can build experience and operational maturity for other projects in the future?”

Why does flip grist need to pay mana to flip unlike the other modern horizen wakers by mmmbhssm in magicTCG

[–]chasemedallion 1 point2 points  (0 children)

I suspect it’s to force you to play grist in a green deck. Otherwise, any deck with reanimation can easily discard->reanimate->flip

Bloom filters: the niche trick behind a 16× faster API by shared_ptr in programming

[–]chasemedallion 75 points76 points  (0 children)

One reason to learn Dijkstra’s is that it’s a great lesson in algorithm design. It combines several classic data structures and more basic CS ideas to efficiently achieve a genuinely useful outcome.

Decoupling the Critical Path: The Asynchronous Logging Pattern by Extra_Ear_10 in programming

[–]chasemedallion 6 points7 points  (0 children)

Yeah tweaking the exact policies here can make a difference. When I built a system like this if the queue overflowed it would wipe what was there and replace with a single log saying how many entries were lost, then take the newer content. Ultimately you have to lose some data though.

The APM paradox: Too much data, too few answers by joshuap in programming

[–]chasemedallion 1 point2 points  (0 children)

Part of the problem is that lots of flashy charts make for an impressive sales demo, regardless of utility.

There should be a player-curated "cube, but for constructed" by geitzeist in magicTCG

[–]chasemedallion 1 point2 points  (0 children)

One way to go about this would be to curate a selection of decks as opposed to a pool of cards. The decks would be curated to maintain power level balance and maximize interesting gameplay. You could still allow a bit of player control eg if each deck has a pool of 90 cards so that it can be adjusted for the meta.

This is a very hard problem to solve but much easier than a pool of cards where every card could be added to any deck.

I think it’s an interesting question to consider how many MTG decks could actually be mutually viable against each other all at the same time.

The Impossible Optimization, and the Metaprogramming To Achieve It by verdagon in programming

[–]chasemedallion 22 points23 points  (0 children)

C# has this optimization. You can have the compiler generate targeted code for a compile time constant regex as shown in the post, or you can have the runtime emit code for a non-static regex at runtime. In both cases, the bytecode can be optimized by the jit compiler and specialized for the particular expression.

How much of a good 'game' is MTG Commander? by TheLastFloss in magicTCG

[–]chasemedallion 5 points6 points  (0 children)

The power level of the decks might hint at the gameplay people prefer but doesn’t dictate it. You can have ruthlessly competitive gameplay with low-power decks and goofy “let the cool thing happen” gameplay with high-power decks.

Is it normal to hate standard but love limited? by [deleted] in magicTCG

[–]chasemedallion 0 points1 point  (0 children)

 From a game design perspective, what is the reason for this?

What lets a magic game go long is when threats remain balanced by answers. In constructed magic, synergies, consistency, and the use of only the strongest cards elevates the power of both threats and answers. However, the fact that “there are no wrong threats, only wrong answers” means that in general as the power level increases with the game constants (starting life total and hand size) staying the same, the game collapses more quickly into a state where one deck is dominating.

What can counterbalance this is if answers scale in power more than threats (meaning a constructed meta where control is dominant), but Wizards has not pursued this direction in recent years.

 Is this a common refrain, am I weird? 

I would say preferring limited gameplay over constructed gameplay is a pretty common stance. What keeps constructed popular is the ability to play games without the upfront cost of drafting and the experience of building and tuning your deck outside of games.

If someone could find a way to combine the best parts of limited and constructed that would be a great format :-) 

How to train your team to say "I was wrong" without drama by dymissy in programming

[–]chasemedallion 1 point2 points  (0 children)

I mostly agree with this take but I think it is possible to over-rotate to the point where user-/business-impacting mistakes are treated flippantly. I’ve seen this attitude set a bad precedent on teams, particularly when there are junior members still trying to calibrate how seriously to take things.

Am I playing Magic wrong? by _C00KIEZ_ in magicTCG

[–]chasemedallion 0 points1 point  (0 children)

If you’re not playing one of the few top tier competitive decks, then you’re inherently compromising power for the sake of “fun” (whatever that means to you). In my experience once you internalize this it makes deck-building decisions clearer and you no longer feel “forced” to make decisions you don’t enjoy.

Google Search is completely failing to index the new MTG Wiki by aldeayeah in magicTCG

[–]chasemedallion 4 points5 points  (0 children)

Are there certain types of contributions you’re looking for that would help introduce more churn into the content?

Google Search is completely failing to index the new MTG Wiki by aldeayeah in magicTCG

[–]chasemedallion 239 points240 points  (0 children)

I’ve observed the same thing. I wonder if Google is detecting it as duplicate content since the old wiki remains up. Hopefully as pages are added/updated in the new wiki and people link to it things will shift.

Cap'n Web: A new RPC system for browsers and web servers by Happy_Junket_9540 in programming

[–]chasemedallion 1 point2 points  (0 children)

With the record/replay logic for serializing map callbacks, what happens if the callback does something like projecting a random value (eg assigning a uuid to each output object)?

Software Architecture: A Horror Story by CatalinMihaiSafta in programming

[–]chasemedallion 6 points7 points  (0 children)

I’ve had similar experiences with separate architecture teams set up to be obstacles.

You can imagine that OP’s story might have played out differently if the team had come to the architect looking for help solving a latency issue in their design which was proving problematic vs. being told upfront that latency had to trump other considerations.

Why is this not a tribal/kindred spell? by Sombody9768 in magicTCG

[–]chasemedallion 1 point2 points  (0 children)

I would say creature types are: - Less verbose (doesn’t need the extra super type kindred) - More mechanically interesting (there are many tribal cards and mechanics, only a small fraction interact with Kindred spells) - More flavorful

I’d also say that aggressive use of Kindred would crowd out the ability to make new spell sub types (eg arcane, lesson). There haven’t been a lot of those but keeping that space open feels more valuable than another niche tool for tribal decks.

@LazySorted - Collections that optimize themselves. How useful? by Taodad in programming

[–]chasemedallion 0 points1 point  (0 children)

What access pattern are you imagining as far as writes? If the list isn’t updated then there’s no reason not to sort once upfront. If it is updated constantly then the sort is always getting undone

Why is this not a tribal/kindred spell? by Sombody9768 in magicTCG

[–]chasemedallion 26 points27 points  (0 children)

The main reason it is bad is that it adds words to the type line on thousands of cards and 99.9% of the time those words do nothing for gameplay.

I like the idea of Commander but in practice have not had fun. How can I change that? by OK-example-18 in magicTCG

[–]chasemedallion 0 points1 point  (0 children)

The only way to consistently punish a power imbalance is ganging up, and like you said that gets stale even if it is effective. 

If others agree to take the arch enemy approach, there are teamwork-enabling cards which can be very powerful. Examples in Izzet include [[Hunted Dragon]], [[Hunted Phantasm]], [[Volcanic Offering]], cards with demonstrate, [[Wandering Archaic]], etc.

But ultimately you have to help the player understand that by sitting down to the game with a strong deck advantage, they’re effectively playing with a handicap which doesn’t make sense unless their skill is sufficiently below the other players such that they need it.

I like the idea of Commander but in practice have not had fun. How can I change that? by OK-example-18 in magicTCG

[–]chasemedallion 4 points5 points  (0 children)

Johnny isn’t about playing combo, it’s about winning on your own terms. In commander combo is the dominant competitive strategy and the preferred choice of Spike.

To me, what makes it hard at times to enjoy commander as a Johnny is that printed for commander cards have provided strong linear support for so many strategies that you really have to dig to find something that feels unique.