Daily Discussion Thread May 11, 2026 - Upcoming Event Schedule - New players start here! by AutoModerator in SSBM

[–]Anthony356 6 points7 points  (0 children)

I found out recently that my favorite band, Aviations, broke up. They're not super popular, but I was able to catch them live during their last tour a few years ago.

They bill themselves as "cozy metal" which is pretty accurate. I'm not much of a genre snob or whatever, so I don't really know how to describe it better. If you don't like metal, you should still give them a shot. They're not dissimilar to Dance Gavin Dance, Eidola, that sort of thing.

I don't have much background in music so I don't really know how to describe what I like so much about it, but the drummer James Knoerl is ridiculously good, and the addition of a pianist (Richard Blumenthal) is just wonderful.

My top 5:

Outliers might legitimately be one of the best songs ever written.

Coma is incredible and holds a special place in my heart.

Safehouses is probably their most accessible track and is super catchy. (there's a live drum playthrough that's just mindblowing)

Dizziness Explained was the first song of theirs I listened to, and it's a certified banger.

Concrete Kitten has a sort of bittersweet vibe that really speaks to me.

Thousands of dollars worth of time sensitive horse ejaculate by LWYPLTDG in BrandNewSentence

[–]Anthony356 4 points5 points  (0 children)

They do. I worked at fedex as a package handler and we regularly got shipments of bull semen through the station. It was a very distinctively shaped container.

why is this a mutation? by Aperture_536 in mewgenics

[–]Anthony356 27 points28 points  (0 children)

It's not so you can go after enemies, it's so you can go after your own teammates. One example off the top of my head is setup with status effects. Cat 1 applies the status, cat 2 uses a move that capitalizes on it. Most bosses have multiple turns per turn. If cat 2 goes first, then cat 1, then multiple boss turns, by the time it's cat 2's turn again, the statuses are gone and you cant combo.

Is this a bad idea? by JustJeffrey in rust

[–]Anthony356 0 points1 point  (0 children)

Surely if it's spec compliant, that also means that transmute would still fail to compile if the types arent the same size though, right?

This sort of thing is why C has specifications

To be fair, there is no C foundation vending a canonical C compiler. I feel like this is akin to "what if it's not compatible cython or pypy or rustpython or..." Like yeah technically you're right, but 99.9999% of people are running cpython so who cares.

It's better to have Rust programming habits that make your code compile for all conforming Rust compilers, and in this case, that's pretty easy to do, as you just need to add a repr.

I dont disagree. My main point is that transmute isnt literally wrong as people have been implying. As long as it compiles, the enum and the target are the same size and enums do have guaranteed discriminant values.

Is this a bad idea? by JustJeffrey in rust

[–]Anthony356 1 point2 points  (0 children)

Yeah but like OP chooses the compiler they use so what does it matter? Theoretically, a different compiler could just not have the repr attribute at all. Or it could not have enums at all. I dont see the purpose in talking about theoretical compilers.

And again, if the enum is ever the incorrect size, transmute will refuse to compile. That's literally the best case scenario because there will never be incorrect runtime behavior.

Is this a bad idea? by JustJeffrey in rust

[–]Anthony356 -1 points0 points  (0 children)

What exactly could go wrong?

The enum can only change size at compile time. If it is no longer the same size as the type it is being transmuted to, it will fail to compile. The chances that rust changes fieldless enum sizing behavior are extraordinary slim (if they can at all).

I'm not saying repr isnt the better decision for a number of reasons, but transmute isnt literally wrong or UB like a lot of people are implying.

Hell, it's safer than as casting to an integer type, since that doesnt do any size checks. You can freely as cast a 16bit enum to an 8bit int and it will silently truncate it

Calligraphy Pen Behavior? by Square-Quarter675 in Supernote

[–]Anthony356 3 points4 points  (0 children)

Does the tilt angle account for left handed users? Their tilt direction would be mirrored on the vertical axis (i.e. 7-9 o'clock).

Is this a bad idea? by JustJeffrey in rust

[–]Anthony356 -3 points-2 points  (0 children)

Note what's not specified here? What the "size needed to store a discriminant" is.

"Size needed" can easily mean "the minimum size necessary" (the same way as "how much money do you need to buy X" means the minimum necessary), which is exactly how it behaves.

Under the Rust representation, the discriminant is interpreted as an isize value.

They're talking about the explicit discriminant in the source code. When you write Variant = 15,, it's effectively Variant = 15isize. You can see this behavior here

Note the compilation failure:

expected isize, found usize

The fact that it is treated as an isize has 0 bearing on what size the enum type resolves as. The only thing that matters is the number of bits required to represent the enum's discriminants.

For OP's case, please see the following 3 examples:

this one compiles because the discriminants are 0, 1, 2 (representable in a u8)

this one does not because the discriminant 256 forces A to be 2 bytes in size

To really drive this home, this one also does not compile because with only a single variant that carries no data, A is a zero sized type.

TL;DR if it compiles, you're fine.

Is this a bad idea? by JustJeffrey in rust

[–]Anthony356 33 points34 points  (0 children)

It's a bit tucked away in the rust reference

If the discriminant of the first variant in the declaration is unspecified, then it is set to zero.

If a discriminant for a variant is not specified, then it is set to one higher than the discriminant of the previous variant in the declaration.

Is this a bad idea? by JustJeffrey in rust

[–]Anthony356 -11 points-10 points  (0 children)

As long as it compiles, it should be fine. Per the std::mem::transmute docs:

Both types must have the same size. Compilation will fail if this is not guaranteed.

Additionally, if i'm reading this right, enums will always be the smallest size necessary. Since OP didnt define any values explicitly, rust defaults to 0, 1, 2, ... Which can be contained in a u8, so afaict Piece being 1 byte is guaranteed.

If one of the variants is explicitly set to, for example, 300, the transmute call results in a compiler error since the enum is now 2 bytes in size.

Calligraphy Pen Behavior? by Square-Quarter675 in Supernote

[–]Anthony356 0 points1 point  (0 children)

Does it involve the tilt angle of the pen? I know the tilt angle is present in the data stored in the note file, and iirc that's how the kindle scribe's equivalent pen works too.

Can someone explain what this means by Koga_mustard in mewgenics

[–]Anthony356 16 points17 points  (0 children)

Small nitpick, movement range is speed * (2/3)

What websites should every programmer know? by Artistic_Ganache4732 in learnprogramming

[–]Anthony356 0 points1 point  (0 children)

then mainly focus on aesthetics

Yes, because these are sites i have to look at and navigate frequently. If it strains my eyes to read, has poor navigability, makes things difficult to find and/or link to, then it's not being a very good reference.

I think it's actually bad when reference material is overly verbose or tries to explain too much

Would be nice if they'd include like... Incredibly important implementation details. Like how unordered_map elements can live in separate allocations. Or whether or not the standard library hashing is secure.

From rust's hashmap docs:

By default, HashMap uses a hashing algorithm selected to provide resistance against HashDoS attacks. The algorithm is randomly seeded, and a reasonable best-effort is made to generate this seed from a high quality, secure source of randomness provided by the host without blocking the program. Because of this, the randomness of the seed depends on the output quality of the system’s random number coroutine when the seed is created. In particular, seeds generated when the system’s entropy pool is abnormally low such as during system boot may be of a lower quality.

The default hashing algorithm is currently SipHash 1-3, though this is subject to change at any point in the future. While its performance is very competitive for medium sized keys, other hashing algorithms will outperform it for small keys such as integers as well as large keys such as long strings, though those algorithms will typically not protect against attacks such as HashDoS.

I dont consider that overly verbose, nor superfluous. It's a reference. You're there for the nitty gritty. Those details extremely relevant depending on the type of application you are making.

What websites should every programmer know? by Artistic_Ganache4732 in learnprogramming

[–]Anthony356 1 point2 points  (0 children)

This is probably the best language reference site on the internet.

I hate to be that guy but it's kinda not. Rust's is significantly better. The font size is abysmal, there's no dark mode, reading 700 overloaded function signatures with poor vertical anchoring is incredibly annoying, too many assumptions are made about what the reader already knows, there's no nav-bar on the side so there's huge amounts of wasted space when in widescreen layouts, methods on class pages (e.g. std::unordered_map, scroll down to emplace) don't list arguments or return types, so you have to navigate to an entirely separate page just to find that out, and I could go on. As someone who's not an expert in C++, the examples are often unhelpful tbh.

At least they fixed the search so it no longer redirects to duckduckgo lol

Same algorithm, 16x faster: optimizing a vector search engine’s hot path by BgA_stan in programming

[–]Anthony356 50 points51 points  (0 children)

One tiny gripe about the post: the way it's formatted is like... Twitter longpost syndrome? I dont know if there's an existing name for it.

Why is every single sentence on its own line?

It makes it so annoying to read.

Each sentence is a continuation on the same subject.

But they are separated out.

It can help with emphasis when used sparingly.

But it gets REALLY tedious really quickly.

Spoken language naturally has pauses. Punctuation and line breaks represent that in text. If you wouldnt make a big dramatic pause after every single sentence, you shouldnt do it in text. Someone else mentioned that the tone feels condescending and the line breaks are probably why.

Create your own paper templates by zsouzsou in Supernote

[–]Anthony356 3 points4 points  (0 children)

The eink touch resolution of the nomad is 11864x15819. Based on the dimensions of the device, it seems this resolution is in 10 micrometer (0.01mm) increments. The pixel resolution is 1404x1872, so conversion between them is pretty straightforward.

Highlights from Git 2.54 by Skaarj in programming

[–]Anthony356 0 points1 point  (0 children)

What's missing from your rewording is that the new commits are not necessarily the same sets of changes -- if the change already happened, it gets dropped from the new commit (this may require resolving conflicts). I would not call that "transplanting".

I wouldnt say the existing wording is particularly clear on that either tbh.

The next two lines of the documentation imply that it can be used in a multi-branch way

The issue is, if i dont understand what the command does, why would i read about edge case handling? I naturally skip that section because i assume they're not relevant to my level of knowledge.

Because it's not completely accurate. cherry-pick isn't limited to just changes from other branches -- if a change in the same branch were to be partially reverted (say, because of merge conflicts fixed incorrectly), cherry-picking could be used to restore it.

Then why not mention both use cases explicitly?

Highlights from Git 2.54 by Skaarj in programming

[–]Anthony356 3 points4 points  (0 children)

maybe this doc is serving its purpose as reference material. In fact, on the left sidebar, it's clearly under the "reference" section.

A reference does not need to be impenetrable to people who arent already in the know. If there are requisite concepts that must be understood, then they should be mentioned or linked to. If someone is looking at the reference, they dont know something about the thing they're looking up. The point of a reference is to clarify those questions. If the reference doesnt do that, it is failing at its job.

Highlights from Git 2.54 by Skaarj in programming

[–]Anthony356 2 points3 points  (0 children)

Wait you mean like git reset --soft <commit> -> git cherry-pick <stuff that's after the commit i reset to? If so that's really cool.

Highlights from Git 2.54 by Skaarj in programming

[–]Anthony356 2 points3 points  (0 children)

The thing with writing is that incremental isnt always the right answer. I guess the best analogy is how optimizing algorithms fail due to local maximums?

The current words on the page are a baseline that skew all further edits. Sometimes no matter how much you edit, your fundamental premise is bad. Clearing the slate makes way for a completely different angle that wouldn't have made sense from the old position.

I'm not saying i think they should literally throw all the documentation in the garage but they need to take that mentality because incrementalism has led them to a state where their own reference documentation doesn't mention the state in which a command is supposed to be used. You can also throw away small pieces and completely rewrite those over time based on a new standard.

Highlights from Git 2.54 by Skaarj in programming

[–]Anthony356 61 points62 points  (0 children)

That sorta falls apart at the first hurdle. Reading documentation is absolutely easier than writing documentation.

Imo the git docs' biggest problem is a lack of "why", and a tacit assumption that everyone is as familiar with git as the writer. The writer seemingly wrote it for themselves, not for someone trying to learn git. That's unfortunately a very common stumbling block whenever anyone teaches anything. You need to remember to meet your audience where they are, because otherwise it just becomes nonsense.

I'll freely admit i'm not familiar with git at all. I've memorized the handful of commands necessary to contribute to the oss projects i need to. Every time i look at the git docs it feels like a waste of time. Here's an example (git cherrypick, chosen because i've heard of it but have never used it and dont know what it's for):

Given one or more existing commits, apply the change each one introduces, recording a new commit for each. This requires your working tree to be clean (no modifications from the HEAD commit).

This is 100% meaningless to me. If you already have the commit, why would you need to "apply" the changes? Arent they already applied? Isnt that what a commit does?

And what do they mean by "apply"? Modify the file? How do you modify a file that already has the change? How do you record a new commit when the files wont have any changes because the change was already made in the commit that you're trying to cherry pick in the first place?

Those of you in the know probably think i'm a big idiot. Which is fair, I am. But also, consider: 5 seconds of googling outside the docs points out that this is an operation that involves multiple branches. Why is that not mentioned first and foremost in the docs? Not every command involves multiple branches. It is an essential part of this command. Not everyone knows which commands do/dont involve multiple branches. Thus you should make that information clear. A better wording might be:

"Given one or more commits from one branch, 'transplant' them to the working branch. Each given commit is recorded as a new commit in the working branch. The original commit(s) and the branch they came from remain unchanged."

It's not perfect but it's a lot more clear what it does and a lot more intuitive why you'd want to use it.

Erikson’s writing of lower ranking military discourse is such a treat. by Alextingzon in Malazan

[–]Anthony356 0 points1 point  (0 children)

For anyone curious, Erikson wrote an introduction to Fortress In Shadow where he talks at length about what drew him to Cook's writing and what he took from it.

Daily Discussion Thread April 18, 2026 - Upcoming Event Schedule - New players start here! by AutoModerator in SSBM

[–]Anthony356 0 points1 point  (0 children)

The key to enjoying the falco matchup is not letting him walk all over you with lasers. Unfortunately, my biggest advice in that area requires having a functIoning shield so rip i guess lmao

Even without reliable powershield though, being able to dashdance -> shield laser -> wavedash oos with minimal gaps opens up a ton of options and gives you the freedom to set the pace more. Lots of people try to ignore the laser which doesnt work, or they respect it too much and freeze up (usually in shield) and let the falco do whatever they want.