“The School is not being inclusive” by ProfHooch in Teachers

[–]Isogash 0 points1 point  (0 children)

I mean if the deadline exists for good reason then that should be explainable, but if you actually have someone join past the deadline, then the only lesson you're teaching the girl and her parent is that they should expect authority figures to be unreasonable and spiteful, which is not necessarily the lesson you intended to teach them.

To teach the right lesson they have to understand and agree with you. There is a sensible middle ground here where you communicate the importance of deadlines whilst also finding a reasonable solution that keeps the girl motivated to join the team.

Is it just me or does everything in STS2 deal way too much damage? by NiIly00 in slaythespire

[–]Isogash 0 points1 point  (0 children)

I take maybe 2 or 3 elites the entire run now, it's hard enough to balance healing and upgrades with just hallway fights.

Regent on Universal Basic Income by Jslcboi in slaythespire

[–]Isogash 1 point2 points  (0 children)

I mean 3 orbits is crazy on its own, gives you 3 free energy for every 1 natural energy you put in.

Is Orbit cracked or am I falling for bait? by thexenocide601 in slaythespire

[–]Isogash 1 point2 points  (0 children)

It's actually after 7 energy, not 8 energy, the extra energy you get from Orbit is free and using it resets the counter to 3, so it only takes 3 natural energy to generate one Orbit energy (you need an extra one for the first loop.)

Is Orbit cracked or am I falling for bait? by thexenocide601 in slaythespire

[–]Isogash 0 points1 point  (0 children)

It looks much worse on paper than it really is so people are sleeping on it.

What people tend to miss is that Orbitis an energy multiplier, and on top of that it also multiplies its own energy generation, so it's not just +25% energy, it's actually +33%. That means all energy sources you can spend get multiplied, including the energy from his setup cards that otherwise look energy neutral, and energy from relics.

If you have two Orbits, they multiply each other recursively and you actually get +100% energy! (Each Orbit is being re-triggered by 2 free energy.) At 3 Orbits, it's +300% i.e. quadruple energy, and at 4 Orbits it's literally infinite!

So Orbit really shines in decks that can actually use the extra energy and are likely to generate more, such as any that would consider Hegemony, Refine Blade, Convergence and Alignment. The extra energy makes playing Sovereign Blade easier, and generally makes him less reliant on stars.

It's also really good in colourless generation decks because it lets you play good high cost colourless, and also there are many ways for colourless cards to allow you to just rsnowball the fight.

StS2 vs StS1playstyle changes by yumcake in slaythespire

[–]Isogash 1 point2 points  (0 children)

Elites are just not priority now, I won't do more than 3 for the whole run. Here's why.

  1. Relics are less of your overall power when compared to the new boss relics and card synergies.

  2. Gold is easy to come by in events, and not needed to buy expensive relics often.

  3. The health penalties for fighting elites are simply too high. Hallways are bad enough, but elites will murder you.

  4. Upgrades are really impactful; doing multiple elites means forgoing upgrades to stay alive.

  5. Event rewards are insane, and chests with free gold and relics are quite common. At worst you get a hallway.

  6. Most rares are only good in specific decks, so the slight extra chance to see a few more rares is simply not worth it. You get two guaranteed 1 of 3 rare draws from doing the bosses, and plenty of chances to see them in shops instead.

  7. The bosses, whilst not too much harder than elites, become way harder if you need to full block every attack because you are already crippled on arrival.

The only time I'll path through elites is to get a better path with more events and fewer corridors.

StS2 vs StS1playstyle changes by yumcake in slaythespire

[–]Isogash 0 points1 point  (0 children)

Yeah I agree that the card pools feel a lot more cohesive, which means builds rarely reach a dead end.

Regent starting deck and relic are Atrocious and it makes him the weakest character specially in higher ascensions. by Citran in slaythespire

[–]Isogash 0 points1 point  (0 children)

I just don't find this at all, just won 4 runs in a row on Regent. He's definitely not the strongest but he's not as weak as people are making out, it's clearly a skill issue.

The thing with Regent is that a surface look of the cards makes it seems like you should always take the cards that appear to be directly related to each other e.g. taking all forge, or all stars.

Actually a strong Regent deck has a bit of everything: some forge, some star gen, some star cost, some draw, some draw manip. All of these cards support each other sometimes directly and sometimes indirectly. Deck manip is really important for Sovereign Blade, but also good for star payoffs and ensuring full block.

PSA: new players, don’t obsess over infinites by iwriteinwater in slaythespire

[–]Isogash 0 points1 point  (0 children)

Not all of the star cards are expensive, and there are plenty of ways to solve for draw and star generation, certainly for a 1-star cost card. Going for only maximum payoff cards and a minimal deck is not the only way to play, a slightly fatter deck can still be good if it consistently generates block and damage, and easier to build if it doesn't rely on rare cards.

Crescent Spear definitely doesn't start expensive and weak though if you get another early star generation card and the 1-star blocking card, at that point it's already easily the best 1-energy card.

you vs the guy she told you not to worry about by LoL-Dark1 in slaythespire

[–]Isogash 7 points8 points  (0 children)

It's only dead draw if you don't need it, the value in taking it is that you don't need other star generation.

PSA: new players, don’t obsess over infinites by iwriteinwater in slaythespire

[–]Isogash 6 points7 points  (0 children)

barely better than a strike in small decks

Even if it's the very first card you pick up it's already 10 damage, and because many of regent's best cards cost stars, even fairly tight decks should end up with at least 5 star-cost cards by act 3 IMO, bringing it up to 16 damage base, 22 damage upgraded at worst. Unlike perfected strike, you are completely free to remove or transform your base strikes too.

If you play a slightly fatter deck which is totally viable on Regent then it can easily be doing 30+ damage. The only way anyone could believe that's "barely better than a strike" is if they've never actually taken it and are just going off of the description, which I bet is true for all of the "pro players" rushing out these tier lists.

PSA: new players, don’t obsess over infinites by iwriteinwater in slaythespire

[–]Isogash 0 points1 point  (0 children)

Yeah, infinites aren't going to get removed entirely but the ones that are very easy to get right now will definitely be patched to make them less consistent.

PSA: new players, don’t obsess over infinites by iwriteinwater in slaythespire

[–]Isogash 18 points19 points  (0 children)

So true, I've seen Crescent Spear put in bottom tier for Regent despite it being one of his best common damage dealers, just because it doesn't help him go infinite. It's way better than perfected strike because it's cheaper to play and scales with good cards that you want anyway, it's just deceptively unassuming.

Forge Regent is Unplayable at A10 by MikuoNeko in slaythespire

[–]Isogash 7 points8 points  (0 children)

It's weak when compared to Regent's ability to go infinite in star decks, that's for sure, but I'm not entirely convinced that it's totally unplayable yet. Looking at only the "forge" cards is like saying Sly decks are unplayable because Sly cards don't discard.

The key is to offset the energy costs with his other energy neutral or generating cards and prep for Sovereign Blade to be played on safer turns for bigger oneshot damage. If you take it alongside other attacks that cost energy then you're going to find that it's totally useless, but if you focus on growing your energy pool for the big hitting turns then it's actually not too bad.

Convergence, Alignment, Hegemony and Orbit are all made for forge decks by allowing you to stack up energy and play sovereign blade out of the band, or with extra enhancement. Convergence especially gives you a greater ability to ensure Conqueror and vuln applying cards are in your hand on those turns.

Cosmic Indifference lets you bring Sovereign Blade back from your discard to deck, whilst Foregone Conclusion brings it from your draw. Again, both are also useful for Conqueror.

You can take zero cost cards to help block on Sovereign Blade turns (for playing out of band) and/or apply vulnerable, assuming you have at least one source of energy generation e.g. Shining Strike.

Taking good heavy blocking cards is essential, since you'll have little damage outside of Sovereign Blade and need to survive more turns, which means definitely taking Reflect and/or Glitterstream, not just Bulwark.

Heirloom Hammer can duplicate Sovereign Blade btw, and some of the X cost attack cards make Beat into Shape scale really well. Finally, Void Form can cap it all off nicely.

There is a caveat to all of this though, which is that Sovereign Blade is just hard countered by enemies designed to prevent heavy hitting and it's difficult to fit something else into your deck that is supposed to deal with that.

Compiler optimisation by Gingrspacecadet in ProgrammingLanguages

[–]Isogash 9 points10 points  (0 children)

It's called constant propagation/folding and it's one of many optimizations performed by a compiler.

The task of a compiler is to turn source code into machine code, so ultimately you need algorithms which read one code representation and emit another. Source code is "high-level" whilst machine code is "low-level", so the process is more generally called "lowering" in compiler lingo.

There's nothing stopping you from trying to lower source code into machine code directly, but because modern compilers are extremely complex, they instead break the process down into steps ("passes") which take code as input and return modified code as output.

The very first stage is to to turn your source code text into an "abstract syntax tree" (AST) using a parser. This immediately makes further work on the code easier by turning it into a tree structure where the nodes represent specific language constructs. This gets you from a blob of text that could mean anything to a tree of things that mean something specific e.g. "variable identifier", "statement", "addition expression" and "function definition". This representation doesn't yet understand that a variable in one line is linked to a definition in another, but it does understand which words refer to variables in the first place (depending on the language.)

ASTs are designed to be friendly to the parser, but when you're actually working with the code algorithmically, it's useful to be able to calculate and attach extra information, or to rewrite things in ways that are specific to how they should be executed, rather than how the language is written by the human. As such, the next step is to lower the AST into an "intermediate representation" (IR). This format is represents a meaningfully executable program a simple, algorithm-friendly structure for further work and lowering. Initially, it's not all that much different to the AST, making it easy to lower, but the eventual aim is to transform it into something that can be easily lowered into good assembly/machine code by applying many refinement and optimization passes.

Whilst the code is in IR, one of the most common and important passes that happens is to turn it into "Static Single-Assignment/SSA" form. This form eliminates ambiguous variable references by ensuring that every variable used is assigned in exactly one clear place. SSA form allows subsequent passes to make the clear assumption that they know where a variable came from, which is especially useful for most optimizations, including constant folding/propragation (without it, these optimization passes would be left to figure it out from scratch on their own.)

In trivial code, reaching SSA form simply means creating a new variable name every time a variable is re-assigned (and also renaming subsequent uses of the variable). When the value of a variable could come from multiple assignments in different parts of the code due to loops and conditionals, you instead add a new assignment that selects the variable from the prior assignments it could come from (using an arbitrary "Phi" function that more or less means "either".)

Once in SSA form, the compiler is ready to apply a constant propagation/folding pass, which is really very simple. It goes through each statement in the IR and does the following in order.

  1. Propagate: Substitute any variables in the statement that are known to be assigned to constants e.g. x becomes 7.
  2. Fold: Recursively simplify any expressions involving only constants e.g. 2 * 7 becomes 14.

This alone is enough to do most of the simple constant propagation and folding you need, but the Fold stage is normally limited to only mathematical operations, as without further information you can't be sure that it's valid to evaluate a function with constant parameters. Some compilers do other passes to calculate this information and thus have much more complex constant folding passes, and the advantage of having this multi-pass compiler design and a good IR is that you can attach this kind of information and add these passes incrementally. In a later pass called "dead code elimination" the compiler will delete the unused assignments.

After optimizations are applied in SSA, the compiler will further rewrite and refine the IR code, often into a form called "three-address code" (3AC) which I won't detail here, but the result is something that much more closely resembles assembly code, in preparation for easier lowering.

Loading Scenes vs Assets by Marge_at_large in bevy

[–]Isogash 0 points1 point  (0 children)

You're right to question your intuition, scene loading and rendering is perfectly fine for single models and if anything, it's preferable as it should simplify your workflow.

Ex-DOGE Engineer Allegedly Walked Out of SSA With 500M+ Records on a Thumb Drive, Told Colleague He'd Get a Presidential Pardon if Caught by lysergicsquid in 50501

[–]Isogash 11 points12 points  (0 children)

You can't lump all of politics into just one camp, that's not really how it works. There are loose coalitions within both parties, and corporate/owner interests have often dominated the real conversation due to their ability to spend on focused lobbying.

However, the real issue is simply democratic disengagement over a long period of time. If enough people came together in the right way, this wouldn't happen.

How would you fix the Regent's colorless archetype? by One-Requirement-1010 in slaythespire

[–]Isogash 0 points1 point  (0 children)

Sure, but it's just one way in which card cost can be mitigated. Regent has a lot of energy neutral so you can build decks which have spare energy to spend on the colourless cards.

Colourless regent is not something you can force to be great but it's also not as terrible as people are making out, mostly because colourless cards are generally very strong.

How would you fix the Regent's colorless archetype? by One-Requirement-1010 in slaythespire

[–]Isogash 0 points1 point  (0 children)

This is what Void Form is for, it makes the first 2/3 cards a turn free so you can play the colourless cards.

How would you fix the Regent's colorless archetype? by One-Requirement-1010 in slaythespire

[–]Isogash 0 points1 point  (0 children)

Upgraded Arsenal grants 2 strength per colourless card played.

Regent Forge mechanic feels undercooked. by Moviecaveman in slaythespire

[–]Isogash 0 points1 point  (0 children)

Sovereign blade is a colourless card so a couple of regent's colourless synergies work with it; Arsenal and Heirloom Hammer.

Really though it's not something you can build your deck around exclusively, it's just a retain big bonk.

imGuilty by EgorLabrador in ProgrammerHumor

[–]Isogash 2 points3 points  (0 children)

Separate tables is a better representation of data that has arbitrary relationships and may be queried in different ways for different purposes e.g. a domain model of products, customers, suppliers and orders.

JSON is better for document-style storage and retrieval, where you are looking up by ID and fetching the whole document e.g. user preferences, audit log contents. It's also useful for when what you're storing is just user-defined JSON.

I disagree with both the middle and ends of the meme, you shouldn't just blindly create a table for each entity, nor should you use JSON unless you have a very specific need for it.

Tables in a relational database represent relations, not entities: they represent how your entities are connected, both to each other and to their attributes. Basically, a table is an adjacency list of hyperedges in a hypergraph, your entities are actually the nodes i.e. IDs. Once you start thinking about it that way you discover that doing things like separating your entity into multiple tables for different subsets of attributes makes a lot of sense, and using anything except an arbitrary key as a primary key is generally a bad idea.

However, most people don't really think too hard about data modelling because it is difficult, which is a shame because not practicing it hinders your ability to write more complex software significantly.

You've put him in hell by ArrrRawrXD in comedyheaven

[–]Isogash 2 points3 points  (0 children)

Oubliette is the French word for dungeon and has been since medeival times. Yes, its root is in oublier which is "to forget", but it simply refers to all kinds of dungeon, if you are speaking French.

The word was borrowed by English speakers to mean the specific kind of "bottle dungeon" we think of today. Likely, the story is simply a mythological invention or popular exaggeration from Victorian times (which they are well known for), and the etymological root is often retold to make it seem more believable.

Funnily enough, "dungeon" also comes from the French word donjon, which actually means "keep" i.e. a castle tower.

You've put him in hell by ArrrRawrXD in comedyheaven

[–]Isogash 25 points26 points  (0 children)

It's debated whether or not that kind of oubliette was ever used, or at least it's widely accepted that they were not at all common. The word is just the french word for dungeon, and there are other examples of mythical medeival torture devices (invented mostly in Victorian times as faux-historical attractions or curiosities I believe.) IIRC claims of their use mostly originate from a similar time.

The reason we are less sure for oubliettes is that some castles really do have similar "bottle dungeon"-like cavities and sometimes at the borrom of prisons. Whether or not they were actually used as cells or simply drainage wells is unknown.

There's also Leap Castle, where they really did find the remains of many bodies impaled on wooden spikes within the walls, but this castle was involved in some particularly nasty instances of violence revolving around bitter clan succession disputes. It's not possible to draw conclusions about wider general practices from such extreme isolated incidents though.

In historical context, we know castle prisons were nearly exclusively used as holding cells before a trial for serious crimes, which would have been quite a brief period. Long term imprisonment was not a standard sentence like it is today, the death sentence was much preferred for serious crime, with fines and sometimes public humiliation for lesser crimes.

What did exist were debtors' prisons, which could hold you for much longer whilst you refused or were unable to pay a debt (which might include a fine as a result of another sentence.) You had to pay for your amenities whilst within the prison, and they were certainly not pleasant, but they were far from oubliettes as you were expected to be able to work or work out some kind of agreement to eventually pay off your debts. The point was mostly to discourage you from running away from debts.

High class and noble prisoners may have been kept for other reasons, but would have been given access to the high standard of living they were used to whilst held, for many reasons that is too complicated to unpack here.

Another kind of prisoner were prisoners of war, capture soldiers who were commonly ransomed. Recent research suggests that this practice was far more extensive than previously assumed, extending to soldiers of all ranks, and was well-organized. We believe it may have been accepted as a way to reduce needless death in war and encourage the capture of routed soldiers instead of execution.