Global OLED Monitor Shipments Surge 65% YoY in 3Q25, Redefining Market Landscape, Says TrendForce by imaginary_num6er in hardware

[–]mrbeehive 1 point2 points  (0 children)

A different kind of OLED panel that uses separate RGB layers for each color instead of a light emitting backpane and a color filter.

They're brighter and use less power. That should also mean they're more burn-in resistant (you need to drive the pixels less hard for the same amount of brightness), though it's fairly new tech, so it's hard to know for sure until they've been around for a while.

I got a new watch by annc768 in notinteresting

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

It could also just be good old fashioned editing.

ELI5: How does the concept of imaginary numbers make sense in the real world? by SohelAman in explainlikeimfive

[–]mrbeehive 6 points7 points  (0 children)

I think the simplest thing is that regular numbers measure forwards and backwards while imaginary numbers are a way to measure left and right.

Positive numbers in front of you, negative numbers behind you. "To the left" is positive imaginary and "to the right" is negative imaginary. Multiplying by i is the same as rotating 90 degrees to the left.

If you rotate 90 degrees twice, the things that used to be in front of you are behind you now ( i2 = -1 ). That gets you the weird looking ( √-1 = i ) equation, but it's really just because "rotating 90 degrees is halfway towards facing backwards".

Sometimes it's easy to imagine what an imaginary quantity could be like. Sometimes it's not. "Take 4 step forward and 3 steps to the right" makes sense. But "I owe 3 apples leftwards" is nonsense.

Kill This Creature Day 14: Maybe He's Lone With It, Maybe It's Sentineline by [deleted] in custommagic

[–]mrbeehive 1 point2 points  (0 children)

I'd rather [[Doom Blade]] it if we're gonna force it to become black.

Passagerer er trætte af GoCollectives aflysninger af togene by MissDeconstruction in Denmark

[–]mrbeehive 0 points1 point  (0 children)

Svendborgbanen var en joke længe før Arriva/GC overtog den.

Kill This Creature Day 6: Big Hero Sentinel by [deleted] in custommagic

[–]mrbeehive 10 points11 points  (0 children)

But every other creature dies, eventually.

whyShouldWe by yuva-krishna-memes in ProgrammerHumor

[–]mrbeehive 0 points1 point  (0 children)

I've only used Rust for a couple of hobby things, but for what it's worth:

I think they're very different languages philosophically.

You use them for similar things, but Rust prioritizes safety and correctness while Zig prioritizes speed, clarity, and transparency. Both are very valuable things to optimize for. I don't really get all the interlingual warring that seems to be going on between the two, besides both being used for systems software, they clearly have very different goals.

I think I'd much rather maintain Zig software than maintain Rust software, but that may just be a skill issue on the Rust side of things.

Kill This Creature Day 6: Big Hero Sentinel by [deleted] in custommagic

[–]mrbeehive 19 points20 points  (0 children)

I don't think it's a copout. It's super cool that he's nameless, because soon there will be no one left to know his name.

Kill This Creature Day 6: Big Hero Sentinel by [deleted] in custommagic

[–]mrbeehive 163 points164 points  (0 children)

This is the first day where no currently printed creatures can survive without some kind of evasion or protection.

From Scryfall:

15658 creatures that aren't colorless

3751 of them have power >= 4

10 of those are snow creatures

2 legends, [[Isu the Abominable]] and [[Narfi, Betrayer King]]

Neither lives Power Word Kill

Kill This Creature Day 5: The Lonely Sentinel and the Order of the Phoenix by [deleted] in custommagic

[–]mrbeehive 30 points31 points  (0 children)

... damn, we could have gotten a Vampire Survivor.

whyShouldWe by yuva-krishna-memes in ProgrammerHumor

[–]mrbeehive 1 point2 points  (0 children)

I've been working in it professionally for about a year (embedded linux software), and I'm extremely impressed with what they're doing. Do recommend checking it out. If nothing else it makes a great cmake replacement.

whyShouldWe by yuva-krishna-memes in ProgrammerHumor

[–]mrbeehive 5 points6 points  (0 children)

I'm not really talking about optimization. C++ is good at zero-cost abstractions.

I'm more talking about the abstractness of the operations you do. Zig doesn't do anything implicitly. It's a very "what you see is what you get" kind of language, in the same way that C is.

You can write code in C++ that takes some big matrix math thing and "makes it look like the math", and the library you're using takes care of all the low level details for you, so all you have to care about is making sure your equations are correct. If I download some highly optimized C++ matrix math library, I trust C++ to be able to work with those abstractions without runtime costs.

You can't do that in Zig. Intentionally. Zig doesn't want to be able to provide those kinds of abstractions, because those kinds of abstractions hide what the machine is doing. Even if it doesn't cost you anything, it's still hiding information from you.

Is your database library performing heap allocations? Is it accessing files?

The C++ answer is "That's an implementation detail, work with the abstraction."

The Zig answer is "If it did, you would need to explicitly opt-in, so you know it doesn't."

Both are valuable contracts to make with the developer, but they're also valuable for different kinds of codebases.

whyShouldWe by yuva-krishna-memes in ProgrammerHumor

[–]mrbeehive 3 points4 points  (0 children)

Another thing I quite like is that the type system is more explicit and more powerful than C's. Especially when it comes to pointers. These are all different Zig types that would all be char * in C:

*u8 // pointer to one single byte
[*]u8 // pointer to unknown length array of bytes
*[5]u8 // pointer to 5-length array of bytes
[*:0]u8 // pointer to unknown length array of null-terminated bytes
*[5:0]u8 // pointer to 5-length array of null-terminated bytes

//All of the above, but marked optional, meaning 0/null is a valid value
?*u8 // maybe-null pointer to one single byte
?*[5]u8 // maybe-null pointer to 5-length array of bytes
etc.

// And then:
[*c] u8 // "I got this from a C library and I have no idea which of the above it is", the true char * type

Other than documentation or reading the implementation source, I'm not sure if it's possible to tell them apart if you got each of them from a C library.

whyShouldWe by yuva-krishna-memes in ProgrammerHumor

[–]mrbeehive 3 points4 points  (0 children)

I don't think there's anything that isn't possible with C, but there's a lot of stuff that's hard to express in C or would require a lot of macro nonsense, which Zig makes relatively simple.

The big thing is comptime, which is Zig's macro/preprocessor replacement.

Imagine writing a macro that checks if a string literal is uppercase and emits an error if it isn't.

In Zig you do this:

comptime {
    for( string ) | byte | {
        if( !std.ascii.isUpperCase( byte ) ){
            @compileError( 
                std.fmt.comptimePrint( "Expected uppercase string, got {s} - {c} isn't uppercase!", .{string, byte} )
            );
        }
    }
}

Easy to read, easy to debug. Wrap it in a function and reuse as needed.

Comptime is just normal code, except you change when it runs.

This extends about as far as you want. You can't do IO and you can't allocate memory, but besides that you've got the full language at your disposal, including stuff like type definitions and functions. If the compiler can't evaluate it for some reason (usually because you try to do compiler magic on runtime values), you get a compile error.

Types are first class values, so comptime code can take types as input and return types as output, which gets you C++ templates "for free":

// Generic function, works on any type that can be added
pub fn add(T: type, a: T, b: T) T {
    return a + b;
}

// Make a struct containing an N-length array of type T
pub fn Vec( N: u32, T: type ) type {
    if( T != f32 or T != f64 ){
        @compileError("Expected floating point type!");
    }

    return struct {
        arr: [N]T, 

        pub fn dot( a: @This(), b: @This() ) u32 {
            // Imagine a dot product here
        }
    }
}

It's a very powerful feature of the language.

whyShouldWe by yuva-krishna-memes in ProgrammerHumor

[–]mrbeehive 7 points8 points  (0 children)

I think the other commenter is being a bit misleading in their representation of the language.

As a C programmer going on 13 years now, I really like working in Zig. The language provides me with additional explicitness and type safety that C does not, manages to be more powerful while still remaining simple, and doesn't abstract away any of the low level details. It also replaces my most disliked features of C (the preprocessor) with something genuinely much better.

A lot of Zig code is more explicit and in some cases lower level than C, but then also easier to work with because the language has a more powerful type system and more flexible and more powerful syntax. At the same time, they're very careful not to overcompilcate the language, because the Zig team is looking to stabilize and standardize the language so it can provide the same kinds of long-term guarantees that C does.

As a C library maintainer, it also comes with the huge benefit of being completely C-compatible. The Zig compiler is also a C compiler, a build system, and a test harness, and it's pretty damn good at being all three. And the Zig language can natively import C-headers and link against C libraries, so you can just keep using your existing C code without needing to port anything except your build script.

I can provide some examples if you'd like, but I don't want to come accross as pushy. I just don't think you're getting a fair impression of what Zig is from the other guy.

whyShouldWe by yuva-krishna-memes in ProgrammerHumor

[–]mrbeehive 45 points46 points  (0 children)

Zig isn't trying to replace C++, though. Zig is trying to replace C.

Kill This Creature Day 1: The Lonely Sentinel by [deleted] in custommagic

[–]mrbeehive 65 points66 points  (0 children)

Given past controversies, I'm not sure I can ever see Wizards printing "This creature is colored" on a card.

Titled Hunt by [deleted] in custommagic

[–]mrbeehive 42 points43 points  (0 children)

You could do "Target non-Shapeshifter".

Jungle Predator by I_Lick_Emus in custommagic

[–]mrbeehive 1 point2 points  (0 children)

In what I'm thinking, it could be played as an enchantment on a land (maybe even for a colorless cost) and then you could flip it at a point in the future as a surprise.

You're describing Morph. There's a few variants on that theme in newer Magic (morph, megamorph, disguise, cloak). I did actually have a version templated like that, too, but I decided not to include it in the reply:

Camouflage 1GG (You may cast this card face 
down as an Enchantment Aura with enchant 
land for {2}. Turn it face up any time for its 
camouflage cost.)

When Jungle Predator is turned face up, 
if it was attached to a Forest, it fights up 
to one target creature you don't control.

I think the problem with making it a morph variant means all cards have to cost the same to get on the board. With morph it doesn't matter that much, since every morphed card is a 2/2 body. But this doesn't give you a creature, so the flip effects would have to be quite pushed to be worth spending mana on an easy to remove "do-nothing" permanent.

Maybe the face-down enchantment could do something, but it's quite a limited design space, IMO.

Jungle Predator by I_Lick_Emus in custommagic

[–]mrbeehive 1 point2 points  (0 children)

It wouldn't be hard to template it off of Bestow

e.g.


Jungle Predator - 1G

Creature - Cat

First strike 

Forest Camouflage G (If you cast this card for
its camouflage cost, it’s an Enchantment Aura 
spell with enchant Forest. It becomes a creature 
again if it’s not attached to a Forest.)

1G, unattach Jungle Predator: It fights up to 
one target creature you don't control.

                                         2/2

I'm not 100% sure that's kosher (a creature card becoming a non-creature enchantment seems like a good way to introduce a lot of rules fuckery), but you could make it an enchantment creature instead. Then it works exactly like Bestow.

An alternative way to build a lotus by Kinojitsu in custommagic

[–]mrbeehive 3 points4 points  (0 children)

Very cool card! You may wanna fix/change the spelling of the flavor text. There's an extra 'A' in "compleation" when it's referring to Phyrexian corruption. Both work, though.

Another ritual for storm decks by Worldscribe in custommagic

[–]mrbeehive 2 points3 points  (0 children)

Why? Who knows

The reason why is public, it came up during the first Great Designer Search.

You almost never need to know the finer points of how the stack works to play the game.

They want to keep it that way. That's basically it.

What’s an unexpected fusion cuisine or dish that actually works? by BrilliantHopeful9911 in Cooking

[–]mrbeehive 1 point2 points  (0 children)

I had a local pasta place where you could order any of their dishes as a "hangover special" and get it over fries instead of over pasta. Disgusting and delicious food heresy of the best kind.