The Retain keyword is similar to the effects from Treasury or Mandarin in Dominion, where you put some card(s) back on top of your deck during clean up if you meet the condition. Treasury especially is also a cantrip, so it doesn't use up space in your hand on the next turn.
Innate of course doesn't have a precedent in Dominion, since you don't keep your deck around between games. Ethereal could - there's no technical reason you couldn't print a Dominion card with text like, "During clean up, trash this card if you would discard it from your hand". I don't think there are any such cards, and I suspect they'd be generally worse in Dominion than Ethereal is in StS. Actually, having a deck of cards using in junking attacks with that text separate from ruins and curses might be interesting - curses that trash themselves, so you could hand them out a lot more aggressively without destabilizing the entire game.
Dominion's traveler cards were Donald X's attempt to make cards that change during the game, though of course Slay the Spire can push that idea much further.
Artifacts and States are a little bit like the Watcher's stances, but less deck-defining. You generally don't build a deck around having a particular artifact or state, but you can use them to get a little extra juice.
I agree, limiting your plays each turn (either with mana or dominion's limited actions) does a lot to change the texture of a game. The Ascension family of deckbuilders where you can just slam your whole hand down every turn tend to leave me underwhelmed.
I don't mean to rag on StS for being unoriginal, quite the opposite, it's great.
Yes, the fact that you can send email to people who aren't using your email system is the main thing that's keeping chat services stuck as part of a company's communication tools and not being the entire (or almost entire) thing.
I actually wrote the easy 50% of email back compatibility for a chat app once - it wasn't as hairy as I expected it was going to be. Everyone has a unique username (or at least username+org pair) so use that to generate an email address for them. Similarly, generate an email address for every group/room. When you receive an email for one of those addresses, use the from headers to find/create a new pseudo-user and dump the body of the email in as a chat message. When someone writes in chat that has a pseudo-user as one of the people watching that chat, send them an email with that text and throw in a few previous messages as a fake reply chain for context.
There are a lot of hairy details about thread management and making sure you don't send pseudo-users too many emails and dealing with all the messed up headers that different platforms send you and trying to only extract the actual message and not the signature/replies from an email and attachments so on that I only worked on a little before the whole thing was shuttered. But it was really cool. Email users tended not to notice that anything was different (they're used to email looking weird from various services) and chat users got to stay in chat that was a little awkward instead of having to switch to a different tool entirely to talk to people outside the organisation. (And, if all the different chat services started doing it, you'd get really janky chat federation for free!) And it lets you get a lot of stuff that gets made as Slack integrations for free, too. Why bother setting up a bot to post to chat when a Jenkins build fails when you can just give Jenkins your dev chat's email address and let it send emails?
I don't know if it's really that rare, though. From where I sit Maciej is playing the fox/anansi/trickster character to a tee, with a healthy dose of ha ha only serious (http://www.catb.org/~esr/jargon/html/H/ha-ha-only-serious.ht...). Whether it's a character he's pretending to be or just his natural communication style is for him to say, but dude-who-wanders-in-to-fuck-up-your-ego-with-practical-jokes is a pretty well-established archetype that predates "troll".
I don't get the logic that starts with "Technology is moving fast but email doesn't change" and leads to the solution being papering over email's faults with some slick UI. It's like the whole city's water pressure is failing and everyone is complaining about faucet design instead of that we're using two thousand year old aqueducts. We need more out of online communication than email can give us at a really fundamental level. Suffice to say, my thoughts on this are longer than an HN comment: http://structur.al/articles/after-email/
1) There's nothing wrong with using a phrase (like "Your life would probably ...") instead of a word. That's kind of what they're for?
2) What about "can"? It's not a drop-in replacement for "should", but it has a lot of what you're going for. "Non-programming skills every programmer _can_ have" is about aspiration not judgement, possibilities not failures.
LITERATURE PRIZE: The US Government General Accountability Office, for
issuing a report about reports about reports that recommends the preparation
of a report about the report about reports about reports.
Never try to out-do the government at bureaucratic recursion.
When I spend all day hopping up and down through different levels of abstraction in the service of building some particular program, it's all too easy to start confusing the map with the territory. If I'm writing some code to draw a circle, I might also have the circle stored on disk in a file that lists a (center, radius) pair, and I might be passing it around in memory as an IDrawable object for someone else's code to consume and I'm putting it on the screen wit pixels and so on and so on and at a certain point it does become useful to have someone remind me that none of those things are really the same circle, or really circles at all, but all representations of some Platonic circle that doesn't actually exist in my code. This problem gets worse when more than one programmer is involved. How many arguments have we seen between two people who agree with each other, but can't tell because they're stuck arguing over whether (center, radius) or a pixel group is "the real circle"?
So no, it's not of much value in that it doesn't tell us anything that we don't already know. But it can be of value to frame our understanding or discussion of the problem.
A lot of people bring up the idea of rigor when I compare prose and code, and I think it's really overemphasized. Just think of English as a language with a really flexible type system that lets you duck type the hell out of everything. In Python, I can write a method that expects a file object, and (at least the last time I used urlopen, which was a while ago) you can pass it something you open from across a network, and a lot of it will still work. Accidentally using a network resource instead of a local resource isn't particularly rigorous, but Python makes it work. English is that, but more so.
The key line for me is "... it's hard to use metaphors in writing. It's simply more abstract." I have this working theory that abstraction in programming language is more or less equivalent to metaphor in person language. The core idea behind metaphors is to create a convenient lie that helps expose some aspect of what you're talking about by comparing it to some other domain. Consider my last paragraph. English has no type system. Telling you that it's duck typed is a lie, in the sense that it isn't true. But as a metaphor, it's convenient because lets me unify two ideas (programming languages and regular languages) under one aspect (things that have degrees of rigor). Similarly, having an abstraction over local files and network files lets me take two things that are accessed very differently, and let me pretend they're the same. It's a lie, but it works.
I'm not really sure how the abstraction==metaphor relation holds under closer scrutiny. I'm also not certain that it's particularly useful in terms of helping me make better programs, but I like it.
I don't think English as a duck typed system works either. You can make a logical leap in an argument and nothing crashes. Many people have made very successful careers based on logical leaps, in fact.
But you can't make leaps with computers. If you forget to tell the computer which file to load, it either crashes, or nothing happens.
Innate of course doesn't have a precedent in Dominion, since you don't keep your deck around between games. Ethereal could - there's no technical reason you couldn't print a Dominion card with text like, "During clean up, trash this card if you would discard it from your hand". I don't think there are any such cards, and I suspect they'd be generally worse in Dominion than Ethereal is in StS. Actually, having a deck of cards using in junking attacks with that text separate from ruins and curses might be interesting - curses that trash themselves, so you could hand them out a lot more aggressively without destabilizing the entire game.
Dominion's traveler cards were Donald X's attempt to make cards that change during the game, though of course Slay the Spire can push that idea much further.
Artifacts and States are a little bit like the Watcher's stances, but less deck-defining. You generally don't build a deck around having a particular artifact or state, but you can use them to get a little extra juice.
I agree, limiting your plays each turn (either with mana or dominion's limited actions) does a lot to change the texture of a game. The Ascension family of deckbuilders where you can just slam your whole hand down every turn tend to leave me underwhelmed.
I don't mean to rag on StS for being unoriginal, quite the opposite, it's great.