WTF Bites


  • Notification Spam Recipient

    @pie_flavor said in WTF Bites:

    https://i.imgur.com/39b0PHo.png

    Excuse me?

    The only thing I've installed since I last checked here was Homefront. Via STEAM, for chrissakes. A game from 20-fucking-11, not least one installed by Steam, should not be writing all of its installation files to the root of the drive that it's on, and then not deleting them afterwards. :wtf:

    Yeah, the Visual C++ 2008 (IIRC) does that. and MS has no intention of fixing it.


  • Notification Spam Recipient

    @lb_ said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    7-Zip is pants-on-head idiotic how it handles drag-drop operations.

    Actually that's a limitation of Windows that the 7zip devs did their best to work around.

    Why does drag-and-drop archive extraction from 7-Zip to Explorer use temp files?
    7-Zip doesn't know folder path of drop target. Only Windows Explorer knows exact drop target. And Windows Explorer needs files (drag source) as decompressed files on disk. So 7-Zip extracts files from archive to temp folder and then 7-Zip notifies Windows Explorer about paths of these temp files. Then Windows Explorer copies these files to drop target folder.

    To avoid temp file usage, you can use Extract command of 7-Zip or drag-and-drop from 7-Zip to 7-Zip.

    That's absolutely not true, see above. They just didn't want to implement it properly, because they used a SO answer for "How to support drop from app?". Yes, the super-simple method is to just provide a file list which, yes, does require physical files to work. No, that's not the only way.

    Edit: :hanzo: twice.


  • Banned

    @tsaukpaetra For a moment, I thought of playing open source and fixing this myself and making pull request, but then I noticed they're still on SourceForge. Fuck SourceForge.



  • @gąska said in WTF Bites:

    Fuck SourceForge.

    Why? The evildooers sold it to gooddoers. Unless you just don't like the user experience of using SourceForge, which I can understand.


  • Banned

    @lb_ said in WTF Bites:

    @gąska said in WTF Bites:

    Fuck SourceForge.

    Why?

    0_1512944363880_79412f2f-9688-420a-8184-45432ff532da-image.png



  • Picture from my desktop's status bar:
    0_1512956209944_2017-12-10.png

    Uh, Radeon? Working on perfecting cloning?
    And yes, they are separate entities in task manager. Each using different amounts of RAM.



  • @tsaukpaetra said in WTF Bites:

    Yeah, the Visual C++ 2008 (IIRC) does that. and MS has no intention of fixing it.

    They did fix it. Like a week after they noticed it. The problem is no developers bothered to update it on their build machines.


  • Banned

    @benjamin-hall said in WTF Bites:

    Working on perfecting cloning?

    @benjamin-hall said in WTF Bites:

    Each using different amounts of RAM.

    It didn't work very well, I guess?


  • Notification Spam Recipient

    @blakeyrat said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    Yeah, the Visual C++ 2008 (IIRC) does that. and MS has no intention of fixing it.

    They did fix it. Like a week after they noticed it. The problem is no developers bothered to update it on their build machines.

    An internal fix isn't really a fix if it never made it out to the users, yeah?

    "Oh yeah, They fixed that glitch that lets an unauthenticated remote attacker to access your computer. Nah, we didn't release that, why do you ask?"



  • @tsaukpaetra I mean it was a service pack to fix a redist installer that wasn't a security issue (just an annoyance issue), so yes it wasn't aggressively pushed out. But the fix does exist.


  • Notification Spam Recipient

    @blakeyrat said in WTF Bites:

    @tsaukpaetra I mean it was a service pack to fix a redist installer that wasn't a security issue (just an annoyance issue), so yes it wasn't aggressively pushed out. But the fix does exist.

    One would hope they would push it out to their MSDN downloads so eventually, a decade later, people would lose the copy of the buggy one and never bundle it in their crap ever again?

    But, no, it's on the Internet, and such a task is beyond the means of such a small company.


  • Banned

    @tsaukpaetra they deleted old version from their website and replaced it with new one. Redirected all the links to the new version. Announced everywhere there has been update. Put update notifications into the IDE. What else should they have done? Hack into build servers worldwide and replace package files on disk?


  • Notification Spam Recipient

    @gąska said in WTF Bites:

    @tsaukpaetra they deleted old version from their website and replaced it with new one. Redirected all the links to the new version. Announced everywhere there has been update. Put update notifications into the IDE. What else should they have done? Hack into build servers worldwide and replace package files on disk?

    They already have a massively popular (Enabled By Default!) antivirus. It would be remarkably easy to add in a PUP define targeting the old version and include a "More information" link to get the updated version.

    They've also included binary-specific patches in Windows in the past, it would also be possible to add a hack note to Windows Compatibility Lists that would alter the working directory for that specific version when it ran.

    Since this particular instance was perpetuated by a small company, it may even be not-so-difficult to poke at them to update their copy (since, you know, only one copy).

    Or even, include a stub module that (when loaded) triggers the "Add Windows Features" installer that (for some reason) isn't utilized for almost anything anymore. Something like how the .Net 2.0/3.5 stub works. Then, there would be no reason to rely on an old broken redistributed installer.

    There are so, sooo many possible solutions, but instead, they took the "Well, I tried" route and moved on.

    No, my bigger complaint is that future versions didn't include a "pack" version that would install all the needed (~45mb IIRC) prior versions all in one swoop, so developers who are (still!) compiling against the earlier version wouldn't even need to bundle the redistributable at all in the first place!

    But, saving three pictures' worth of data on the disk is more important.


  • Considered Harmful

    @pie_flavor By the way, this is still a problem. cpw's solution is fucktarded, but it's a solution to a very much existing problem.
    Code I just came across, pasted verbatim (formatting and all):

    public class ModClassTransformer implements IClassTransformer
    {
    @Override 
    public byte[] transform(String name, String transformedName, byte[] basicClass) {
    		 
    		if (name.equals("afg") || name.equals("net.minecraft.item.ItemSword")) {
    			return patchItemSword(name, basicClass, name.equals("afg"));
    		 
    		}
    		 
    		return basicClass;
    		 
    		}
    private byte[] patchItemSword(String name, byte[] basicClass, boolean obf) {
    	 
    	String targetMethodName = obf ? "a" : "getItemAttributeModifiers";
    
    	ClassNode classNode = new ClassNode();
    	ClassReader classReader = new ClassReader(basicClass);
    	classReader.accept(classNode, ClassReader.EXPAND_FRAMES);
    	MethodNode mnode = ASMHelper.findMethod(classNode, targetMethodName, "(Lnet/minecraft/inventory/EntityEquipmentSlot;)Lcom/google/common/collect/Multimap;");
    	ListIterator<AbstractInsnNode> iter = mnode.instructions.iterator();
    	int i = 0;
    	while (iter.hasNext())
    	{
    		AbstractInsnNode test = iter.next();
    		i++;
    		if (i > 36 && i < 38)
    		{
    			LdcInsnNode test2 = (LdcInsnNode) test;
    			test2.cst = (double)4;
    		}
    	}
    
    	
    
    	ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
    	classNode.accept(cw);
    	return cw.toByteArray();
    }
    		 
    }
    

  • Banned

    @tsaukpaetra said in WTF Bites:

    They already have a massively popular (Enabled By Default!) antivirus. It would be remarkably easy to add in a PUP define targeting the old version and include a "More information" link to get the updated version.

    That's one way to solve it. A hugely overengineered way breaking all the rules of good software design and separation of responsibilities to solve a very minor problem that most people don't have, and of those who have, most don't care. And I guarantee you that if Windows Defender ever got the "notify of outdated installers" feature, I and many other power users would disable it on day 1 and add it to the things-to-do-after-setting-up-Windows checklist, right after disabling sticky keys shortcut.

    @tsaukpaetra said in WTF Bites:

    They've also included binary-specific patches in Windows in the past, it would also be possible to add a hack note to Windows Compatibility Lists that would alter the working directory for that specific version when it ran.

    That one's better. Although I still think it's overkill.

    @tsaukpaetra said in WTF Bites:

    Since this particular instance was perpetuated by a small company, it may even be not-so-difficult to poke at them to update their copy (since, you know, only one copy).

    Do it, then!

    @tsaukpaetra said in WTF Bites:

    Or even, include a stub module that (when loaded) triggers the "Add Windows Features" installer that (for some reason) isn't utilized for almost anything anymore. Something like how the .Net 2.0/3.5 stub works. Then, there would be no reason to rely on an old broken redistributed installer.

    The problem is that the old broken installer is already out there. Sure, it's a good idea for future redist packages. But then, new redist package installers don't have that problem.

    @tsaukpaetra said in WTF Bites:

    There are so, sooo many possible solutions, but instead, they took the "Well, I tried" route and moved on.

    No - they did the most correct and absolutely the best solution to the "installer is broken" problem - they fixed it and released updated version. Your problem is something they didn't even think about, and probably don't care - that the old version will still be in use and will be distributed with video games for years to come because some idiot at some wannabe game studio couldn't bother to update the file that goes into their package.

    @tsaukpaetra said in WTF Bites:

    No, my bigger complaint is that future versions didn't include a "pack" version that would install all the needed (~45mb IIRC) prior versions all in one swoop, so developers who are (still!) compiling against the earlier version wouldn't even need to bundle the redistributable at all in the first place!

    1. If future redist versions included all previous versions too. How does that fix the old installer?
    2. If future redist versions included all previous versions too. How does that allow developers not to include redist installer?


  • @remi said in WTF Bites:

    @lb_ Ah, good, I was starting to worry that no-one was seeing that one! phew

    (EDIT: and no, they are not properly capped in any way before calling this function, so long paths will definitely cause a buffer overflow)

    And the maximum length of a local file path is 260 characters, and there are two such paths, so even assuming the lengths were properly capped, 512 would be too low a size (one would need 520+rest of command).



  • @medinoc and who even knows what happens when you enable Windows 10's new longer file paths option.


  • ♿ (Parody)

    @gąska said in WTF Bites:

    @dreikin I, on the other hand, pretend that modulo division doesn't work on negative numbers at all. Kinda like when doing C++, I pretend postincrementation doesn't exist and assignment returns void. Doing otherwise is bound to confuse someone eventually, which leads to bugs.

    Mathematically, I'd typically say that -1 mod 9 is congruent to 8 mod 9. But of course people are free to define operators in computer languages however they want, especially if they want to avoid special cases for optimization purposes.


  • ♿ (Parody)

    @dreikin said in WTF Bites:

    @ben_lubar said in WTF Bites:

    @dreikin said in WTF Bites:

    @gąska said in WTF Bites:

    @dreikin negative numbers and modulo never works well. No matter what semantics you invent, it's always going to be confusing in some cases - you have to choose whether a/b + a%b = a or 0 <= a%b < b.

    I choose the latter based on two principles:

    • The only non-controversial definition of modulus has its domain being the unsigned integers, thus its range [0, n], and
    • The idea of modulus being cyclical, therefore going in the negative direction should wrap around the other side.

    So I maintain it should be (-1) % 9 == 8), and anything else should be special exceptions or :doing_it_wrong: .

    The % operator in most languages is not modulo - it is remainder.

    REMAINDER(-1, 9) is -1.

    Yes, but the C# documentation calls it modulus:

    x % y – modulus. If the operands are integers, this returns the remainder of dividing x by y. If q = x / y and r = x % y, then x = q * y + r.

    Ah, but you are inserting an assumption about using the least non-negative residues. The documentation is perfectly cromulent!


  • ♿ (Parody)

    @tsaukpaetra said in WTF Bites:

    @ben_lubar said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    @pie_flavor said in WTF Bites:

    @tsaukpaetra Why not just cut and paste it instead of copying and pasting it? Instant.

    That wasn't me who initiated the copy. 7-Zip is pants-on-head idiotic how it handles drag-drop operations.

    7-Zip has an "extract here" option on the right click menu.

    Which is totally fine.

    Doesn't mean it can't support drag and drop properly.

    That's like making a notepad app that deletes two characters when pressing backspace, but your response would be "Well it has a built-in on-screen keyboard right there!".

    E_MISSING_FUCKING_HELL



  • @dreikin

    Remainder Modulus
    Java Java
    Go Go
    .NET [there doesn't seem to be one in .NET]

  • Discourse touched me in a no-no place

    @gąska said in WTF Bites:

    so, is it uint32, or Python? Because Python doesn't have unsigned ints.

    It's a uint32 on the C code of the code, and Python's ints are effectively large enough that we don't care. (They internally grow to be bigints if needed.) The code to move values back and forth is correct and very well tested indeed.


  • Notification Spam Recipient

    @gąska said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    They already have a massively popular (Enabled By Default!) antivirus. It would be remarkably easy to add in a PUP define targeting the old version and include a "More information" link to get the updated version.

    That's one way to solve it. A hugely overengineered way breaking all the rules of good software design and separation of responsibilities to solve a very minor problem that most people don't have, and of those who have, most don't care. And I guarantee you that if Windows Defender ever got the "notify of outdated installers" feature, I and many other power users would disable it on day 1 and add it to the things-to-do-after-setting-up-Windows checklist, right after disabling sticky keys shortcut.

    Never stopped them in the past. 🤷🏿♂

    @tsaukpaetra said in WTF Bites:

    They've also included binary-specific patches in Windows in the past, it would also be possible to add a hack note to Windows Compatibility Lists that would alter the working directory for that specific version when it ran.

    That one's better. Although I still think it's overkill.

    If they do it for way less important programs, why not their own?

    @tsaukpaetra said in WTF Bites:

    Since this particular instance was perpetuated by a small company, it may even be not-so-difficult to poke at them to update their copy (since, you know, only one copy).

    Do it, then!

    Do I look like a megabux corporation with weight to throw around? The response I got was along the lines of "to ensure you always have the latest version of the game, make sure you have an internet connection"

    @tsaukpaetra said in WTF Bites:

    Or even, include a stub module that (when loaded) triggers the "Add Windows Features" installer that (for some reason) isn't utilized for almost anything anymore. Something like how the .Net 2.0/3.5 stub works. Then, there would be no reason to rely on an old broken redistributed installer.

    The problem is that the old broken installer is already out there. Sure, it's a good idea for future redist packages. But then, new redist package installers don't have that problem.

    They shouldn't have released buggy shitty software in the first place! </blakey>

    @tsaukpaetra said in WTF Bites:

    There are so, sooo many possible solutions, but instead, they took the "Well, I tried" route and moved on.

    No - they did the most correct and absolutely the best solution to the "installer is broken" problem - they fixed it and released updated version. Your problem is something they didn't even think about, and probably don't care - that the old version will still be in use and will be distributed with video games for years to come because some idiot at some wannabe game studio couldn't bother to update the file that goes into their package.

    That wannabe game studio is making billions off its distribution platform, if memory serves.

    @tsaukpaetra said in WTF Bites:

    No, my bigger complaint is that future versions didn't include a "pack" version that would install all the needed (~45mb IIRC) prior versions all in one swoop, so developers who are (still!) compiling against the earlier version wouldn't even need to bundle the redistributable at all in the first place!

    1. If future redist versions included all previous versions too. How does that fix the old installer?
    2. If future redist versions included all previous versions too. How does that allow developers not to include redist installer?

    Because of would already be installed in the first place? And therefore the old installer would go, "oh hey, I'm installed already. Nothing to do here! K thx bai" additionally, the developers could rely on the idea that core functionality was included in everyone's machine and wouldn't need the R distributable at all.

    That last question is akin to asking why developers don't include the .Net 2.0 installer with their App. Sure, it can be, for those out in the boonies with no internet, but they again outlier edge case not fitting most of the target userbase.


  • area_can

    Debugging production stack trace:

    sql = UPDATE `foo` SET `row_pk` = '-1787293180' ...
    

    Uh oh...



  • @pie_flavor said in WTF Bites:

    @tsaukpaetra Why not just cut and paste it instead of copying and pasting it? Instant.

    Unless you're moving from one drive to another (or network/internet to drive or vice versa), in which case it doesn't matter.



  • @tsaukpaetra said in WTF Bites:

    They shouldn't have released buggy shitty software in the first place!

    See, that's why you should only use commercial software released by corporation that actually have QA, since they would have realized their buggy installer was littering the root of your drive before it was released to the public. Not like those open sour morons.

    Oh, wait 🛒



  • @tsaukpaetra said in WTF Bites:

    And therefore the old installer would go, "oh hey, I'm installed already. Nothing to do here! K thx bai"

    It doesn't do that until after it's already unpacked.

    @tsaukpaetra said in WTF Bites:

    That last question is akin to asking why developers don't include the .Net 2.0 installer with their App.

    Because Windows Vista and up ship with .NET 2 and nobody supports XP anymore. However, that's a 15 year lag time, and even now Steam still tries to run dotnetfx.exe as part of a bunch of install scripts.


  • Notification Spam Recipient

    @twelvebaud said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    And therefore the old installer would go, "oh hey, I'm installed already. Nothing to do here! K thx bai"

    It doesn't do that until after it's already unpacked.

    Which would be totally fine.

    And even, I wouldn't (terribly) mind that it spewed crap into the root if it cleaned up after itself.

    But the only reason we're talking about it at all right now is it's broken and doesn't do any of the above.

    @tsaukpaetra said in WTF Bites:

    That last question is akin to asking why developers don't include the .Net 2.0 installer with their App.

    Because Windows Vista and up ship with .NET 2 and nobody supports XP anymore. However, that's a 15 year lag time, and even now Steam still tries to run dotnetfx.exe as part of a bunch of install scripts.

    Which is fine, they could have done with C++ runtimes what they did with .Net, so even running old outdated installers should result in a nop, but instead we have this.


  • And then the murders began.

    @ben_lubar said in WTF Bites:

    Remainder Modulus
    Java Java
    Go Go
    .NET [there doesn't seem to be one in .NET] .NET

    FTFY.


  • Banned

    @tsaukpaetra said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    They've also included binary-specific patches in Windows in the past, it would also be possible to add a hack note to Windows Compatibility Lists that would alter the working directory for that specific version when it ran.

    That one's better. Although I still think it's overkill.

    If they do it for way less important programs, why not their own?

    Microsoft seems to have a policy of only hotpatching programs that crash now but didn't before. VC2008 runtime isn't one of them.

    @tsaukpaetra said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    Since this particular instance was perpetuated by a small company, it may even be not-so-difficult to poke at them to update their copy (since, you know, only one copy).

    Do it, then!

    Do I look like a megabux corporation with weight to throw around? The response I got was along the lines of "to ensure you always have the latest version of the game, make sure you have an internet connection"

    Do you know how much it costs for MS as a company to issue official letters? Do you think even one of the fifty people that have to sign off on all external communication with other legal entities would deem it important enough to allow something that could potentially result in a lawsuit (because in US, absolutely everything potentially results in a lawsuit), and that would most likely be ignored anyway by the recipient?

    @tsaukpaetra said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    There are so, sooo many possible solutions, but instead, they took the "Well, I tried" route and moved on.

    No - they did the most correct and absolutely the best solution to the "installer is broken" problem - they fixed it and released updated version. Your problem is something they didn't even think about, and probably don't care - that the old version will still be in use and will be distributed with video games for years to come because some idiot at some wannabe game studio couldn't bother to update the file that goes into their package.

    That wannabe game studio is making billions off its distribution platform, if memory serves.

    Correct me if I'm wrong, but isn't it the developers that prepare installers for Steam?

    @tsaukpaetra said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    No, my bigger complaint is that future versions didn't include a "pack" version that would install all the needed (~45mb IIRC) prior versions all in one swoop, so developers who are (still!) compiling against the earlier version wouldn't even need to bundle the redistributable at all in the first place!

    1. If future redist versions included all previous versions too. How does that fix the old installer?
    2. If future redist versions included all previous versions too. How does that allow developers not to include redist installer?

    Because of would already be installed in the first place? And therefore the old installer would go, "oh hey, I'm installed already. Nothing to do here! K thx bai"

    That's exactly what this broken installer does right now. Except it has to unpack itself first.

    @tsaukpaetra said in WTF Bites:

    additionally, the developers could rely on the idea that core functionality was included in everyone's machine and wouldn't need the R distributable at all.

    They could. That's actually one thing I don't understand - why Windows doesn't have all the VC runtimes included by default. But that's beside the point, because Windows XP, released in 2001, couldn't possibly include a runtime version released 7 years later. So developers would have package runtime installer anyway.

    @tsaukpaetra said in WTF Bites:

    That last question is akin to asking why developers don't include the .Net 2.0 installer with their App.

    Because it actually IS included by default in EVERY Windows installation they target. Assuming they target Vista and up - if they target XP, it should include .Net 2.0 installer.


  • Winner of the 2016 Presidential Election

    @pie_flavor said in WTF Bites:

    @pie_flavor By the way, this is still a problem. cpw's solution is fucktarded, but it's a solution to a very much existing problem.
    Code I just came across, pasted verbatim (formatting and all):

    public class ModClassTransformer implements IClassTransformer
    {
    @Override 
    public byte[] transform(String name, String transformedName, byte[] basicClass) {
    		 
    		if (name.equals("afg") || name.equals("net.minecraft.item.ItemSword")) {
    			return patchItemSword(name, basicClass, name.equals("afg"));
    		 
    		}
    		 
    		return basicClass;
    		 
    		}
    private byte[] patchItemSword(String name, byte[] basicClass, boolean obf) {
    	 
    	String targetMethodName = obf ? "a" : "getItemAttributeModifiers";
    
    	ClassNode classNode = new ClassNode();
    	ClassReader classReader = new ClassReader(basicClass);
    	classReader.accept(classNode, ClassReader.EXPAND_FRAMES);
    	MethodNode mnode = ASMHelper.findMethod(classNode, targetMethodName, "(Lnet/minecraft/inventory/EntityEquipmentSlot;)Lcom/google/common/collect/Multimap;");
    	ListIterator<AbstractInsnNode> iter = mnode.instructions.iterator();
    	int i = 0;
    	while (iter.hasNext())
    	{
    		AbstractInsnNode test = iter.next();
    		i++;
    		if (i > 36 && i < 38)
    		{
    			LdcInsnNode test2 = (LdcInsnNode) test;
    			test2.cst = (double)4;
    		}
    	}
    
    	
    
    	ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
    	classNode.accept(cw);
    	return cw.toByteArray();
    }
    		 
    }
    

    :fa_twitch.png: Magic offsets...into code...that may be altered by other code :fa_twitch.png:


  • Notification Spam Recipient

    @gąska said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    There are so, sooo many possible solutions, but instead, they took the "Well, I tried" route and moved on.

    No - they did the most correct and absolutely the best solution to the "installer is broken" problem - they fixed it and released updated version. Your problem is something they didn't even think about, and probably don't care - that the old version will still be in use and will be distributed with video games for years to come because some idiot at some wannabe game studio couldn't bother to update the file that goes into their package.

    That wannabe game studio is making billions off its distribution platform, if memory serves.

    Correct me if I'm wrong, but isn't it the developers that prepare installers for Steam?

    Nope.

    0_1513026351373_19d40296-2021-4093-a53c-2346bebf814f-image.png

    @gąska said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    No, my bigger complaint is that future versions didn't include a "pack" version that would install all the needed (~45mb IIRC) prior versions all in one swoop, so developers who are (still!) compiling against the earlier version wouldn't even need to bundle the redistributable at all in the first place!

    1. If future redist versions included all previous versions too. How does that fix the old installer?
    2. If future redist versions included all previous versions too. How does that allow developers not to include redist installer?

    Because of would already be installed in the first place? And therefore the old installer would go, "oh hey, I'm installed already. Nothing to do here! K thx bai"

    That's exactly what this broken installer does right now. Except it has to unpack itself first.

    Which I said was fine, so long as it deletes itself when it's done. Reading comprehension?

    @gąska said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    additionally, the developers could rely on the idea that core functionality was included in everyone's machine and wouldn't need the R distributable at all.

    They could. That's actually one thing I don't understand - why Windows doesn't have all the VC runtimes included by default. But that's beside the point, because Windows XP, released in 2001, couldn't possibly include a runtime version released 7 years later. So developers would have package runtime installer anyway.

    If they're targeting Windows 10, why would they expect Windows XP to have the same runtimes? What??? It almost sounds like you're saying that, since older versions of Windows wouldn't have future versions of libraries, developers who are targeting older versions of Windows would still have to package those runtimes.

    @gąska said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    That last question is akin to asking why developers don't include the .Net 2.0 installer with their App.

    Because it actually IS included by default in EVERY Windows installation they target. Assuming they target Vista and up - if they target XP, it should include .Net 2.0 installer.

    Reading comprehension. I said "akin to". It C++ runtimes AREN'T included by default in EVERY Windows installation they target, hence the original reason for "redistributables" in the first place!



  • @dreikin @pie_flavor

    The Aristocrats!


  • Winner of the 2016 Presidential Election

    @boomzilla said in WTF Bites:

    @dreikin said in WTF Bites:

    @ben_lubar said in WTF Bites:

    @dreikin said in WTF Bites:

    @gąska said in WTF Bites:

    @dreikin negative numbers and modulo never works well. No matter what semantics you invent, it's always going to be confusing in some cases - you have to choose whether a/b + a%b = a or 0 <= a%b < b.

    I choose the latter based on two principles:

    • The only non-controversial definition of modulus has its domain being the unsigned integers, thus its range [0, n], and
    • The idea of modulus being cyclical, therefore going in the negative direction should wrap around the other side.

    So I maintain it should be (-1) % 9 == 8), and anything else should be special exceptions or :doing_it_wrong: .

    The % operator in most languages is not modulo - it is remainder.

    REMAINDER(-1, 9) is -1.

    Yes, but the C# documentation calls it modulus:

    x % y – modulus. If the operands are integers, this returns the remainder of dividing x by y. If q = x / y and r = x % y, then x = q * y + r.

    Ah, but you are inserting an assumption about using the least non-negative residues. The documentation is perfectly cromulent!

    Not really an assumption, more like a belief of what is the Right™ way to do things that I stated quite clearly earlier. They should call it remainder if they mean remainder.


  • Winner of the 2016 Presidential Election

    @ben_lubar said in WTF Bites:

    there doesn't seem to be [a modulus function] in .NET

    Yet another clear oversight on their part. I look forward to them fixing it in the future, like the fix to make references non-nullable by default that they're currently pushing. 🚎


  • ♿ (Parody)

    @dreikin said in WTF Bites:

    @boomzilla said in WTF Bites:

    @dreikin said in WTF Bites:

    @ben_lubar said in WTF Bites:

    @dreikin said in WTF Bites:

    @gąska said in WTF Bites:

    @dreikin negative numbers and modulo never works well. No matter what semantics you invent, it's always going to be confusing in some cases - you have to choose whether a/b + a%b = a or 0 <= a%b < b.

    I choose the latter based on two principles:

    • The only non-controversial definition of modulus has its domain being the unsigned integers, thus its range [0, n], and
    • The idea of modulus being cyclical, therefore going in the negative direction should wrap around the other side.

    So I maintain it should be (-1) % 9 == 8), and anything else should be special exceptions or :doing_it_wrong: .

    The % operator in most languages is not modulo - it is remainder.

    REMAINDER(-1, 9) is -1.

    Yes, but the C# documentation calls it modulus:

    x % y – modulus. If the operands are integers, this returns the remainder of dividing x by y. If q = x / y and r = x % y, then x = q * y + r.

    Ah, but you are inserting an assumption about using the least non-negative residues. The documentation is perfectly cromulent!

    Not really an assumption, more like a belief of what is the Right™ way to do things that I stated quite clearly earlier. They should call it remainder if they mean remainder.

    Yes, least non-negative residues is the most common ways to talk about stuff like that, but their remainder is 100% accurate and again, you assumed something they never told you and leaving negatives negative has value, too.


  • Winner of the 2016 Presidential Election

    @boomzilla said in WTF Bites:

    @dreikin said in WTF Bites:

    @boomzilla said in WTF Bites:

    @dreikin said in WTF Bites:

    @ben_lubar said in WTF Bites:

    @dreikin said in WTF Bites:

    @gąska said in WTF Bites:

    @dreikin negative numbers and modulo never works well. No matter what semantics you invent, it's always going to be confusing in some cases - you have to choose whether a/b + a%b = a or 0 <= a%b < b.

    I choose the latter based on two principles:

    • The only non-controversial definition of modulus has its domain being the unsigned integers, thus its range [0, n], and
    • The idea of modulus being cyclical, therefore going in the negative direction should wrap around the other side.

    So I maintain it should be (-1) % 9 == 8), and anything else should be special exceptions or :doing_it_wrong: .

    The % operator in most languages is not modulo - it is remainder.

    REMAINDER(-1, 9) is -1.

    Yes, but the C# documentation calls it modulus:

    x % y – modulus. If the operands are integers, this returns the remainder of dividing x by y. If q = x / y and r = x % y, then x = q * y + r.

    Ah, but you are inserting an assumption about using the least non-negative residues. The documentation is perfectly cromulent!

    Not really an assumption, more like a belief of what is the Right™ way to do things that I stated quite clearly earlier. They should call it remainder if they mean remainder.

    Yes, least non-negative residues is the most common ways to talk about stuff like that, but their remainder is 100% accurate and again, you assumed something they never told you and leaving negatives negative has value, too.

    🤷♂ Assumptions happen, I heard it behaved differently than assumed, tested, and complained. I'm not sure what point you're trying to score here.


  • ♿ (Parody)

    @dreikin said in WTF Bites:

    I'm not sure what point you're trying to score here.

    :pendant:


  • Winner of the 2016 Presidential Election

    @boomzilla said in WTF Bites:

    @dreikin said in WTF Bites:

    I'm not sure what point you're trying to score here.

    :pendant:

    Ah yes, the venerable :pendant: point.



  • @unperverted-vixen said in WTF Bites:

    @ben_lubar said in WTF Bites:

    Remainder Modulus
    Java Java
    Go Go
    .NET [there doesn't seem to be one in .NET] .NET

    FTFY.

    No, that's just a poorly-renamed copy of the Remainder function.


  • And then the murders began.

    @ben_lubar said in WTF Bites:

    No, that's just a poorly-renamed copy of the Remainder function.

    Good point, I missed quirk with signs. :(


  • Banned

    @tsaukpaetra said in WTF Bites:

    @gąska said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    @tsaukpaetra said in WTF Bites:

    There are so, sooo many possible solutions, but instead, they took the "Well, I tried" route and moved on.

    No - they did the most correct and absolutely the best solution to the "installer is broken" problem - they fixed it and released updated version. Your problem is something they didn't even think about, and probably don't care - that the old version will still be in use and will be distributed with video games for years to come because some idiot at some wannabe game studio couldn't bother to update the file that goes into their package.

    That wannabe game studio is making billions off its distribution platform, if memory serves.

    Correct me if I'm wrong, but isn't it the developers that prepare installers for Steam?

    Nope.

    Oh. TIL. Off to write email.

    @tsaukpaetra said in WTF Bites:

    That's exactly what this broken installer does right now. Except it has to unpack itself first.

    Which I said was fine, so long as it deletes itself when it's done. Reading comprehension?

    It's supposed to delete itself but IT HAS A BUG. A bug that was FIXED IMMEDIATELY.

    @tsaukpaetra said in WTF Bites:

    They could. That's actually one thing I don't understand - why Windows doesn't have all the VC runtimes included by default. But that's beside the point, because Windows XP, released in 2001, couldn't possibly include a runtime version released 7 years later. So developers would have package runtime installer anyway.

    If they're targeting Windows 10, why would they expect Windows XP to have the same runtimes? What??? It almost sounds like you're saying that, since older versions of Windows wouldn't have future versions of libraries, developers who are targeting older versions of Windows would still have to package those runtimes.

    Yes, that's exactly what I'm saying. You're saying it's wrong? Or are you agreeing with me here? I'm honestly confused right now.

    @tsaukpaetra said in WTF Bites:

    Because it actually IS included by default in EVERY Windows installation they target. Assuming they target Vista and up - if they target XP, it should include .Net 2.0 installer.

    Reading comprehension. I said "akin to". It C++ runtimes AREN'T included by default in EVERY Windows installation they target, hence the original reason for "redistributables" in the first place!

    The grammar you used is extremely convoluted so I gave up on trying to understand what exactly you meant (is the part after "sure" an answer to the question I made, and answer to the "akin" question about .Net, or a side comment unrelated to discussion? It doesn't really work as any of these). So instead I pulled up a strawman of what is most likely that you actually meant by your post, and replied to that instead.

    And the reply is: the .Net thing is different from VC redist thing because .Net is included in Windows and VC is not. And even if they were included in Windows, there would still be a valid reason to have redist packages and attach them to app installers - since Visual Studio comes out more often than Windows, there's 99% chance the oldest still supported Windows is older than VC runtime needed for app you're making right now.


  • Notification Spam Recipient

    @gąska said in WTF Bites:

    I'm honestly confused right now.

    You know what? Fuck it. I don't even care enough anymore. Think hard on what you've done.


  • Banned

    @tsaukpaetra I replied to you. Was that wrong? Should I stop replying to you?


  • Notification Spam Recipient

    @gąska said in WTF Bites:

    @tsaukpaetra I replied to you. Was that wrong? Should I stop replying to you?

    No, but apparently I'm not eloquent enough in the manner you can comprehend to carry on a reasonable discussion about this topic, which was meant for:

    @cartman82 said in WTF Bites:

    You have a tiny WTF that doesn't deserve its own thread. It doesn't fit into the Status thread, because it is unreleted to you. It's not exactly a funny or bad idea. It's not a quick link.

    This is no longer tiny, nor a quick link, and I'm tired of arguing this dead pony.


  • Considered Harmful

    @gąska Worse - you've disagreed with him.


  • Banned

    @tsaukpaetra I miss the times when we could argue about effects of GMO on health in a topic about PHP syntax and no one bat an eye. But that was two forum migrations ago, and I wasn't even registered.



  • @gąska said in WTF Bites:

    @tsaukpaetra I miss the times when we could argue about effects of GMO on health in a topic about PHP syntax and no one bat an eye. But that was two forum migrations ago, and I wasn't even registered.

    Let's talk about the effects of PHP syntax on the health of GMOs.



  • @hardwaregeek my_gmo_health_escape_real


  • Notification Spam Recipient

    @gąska said in WTF Bites:

    no one bat an eye.

    Are they doing that now? I know topics are free, but that seems kinda risque...


Log in to reply